【问题标题】:Use external JS to import data from XML使用外部JS从XML导入数据
【发布时间】:2014-12-26 23:57:08
【问题描述】:

我的 HTML 文件中有很多 javascript 代码(1500 行),我想将其中的一部分移动到另一个 js 文件中。我想制作一个用于导入数据的文件,我可以找到最好的方法。

这是我的 gameDataImport.js 文件:

function gameImport(gameID){
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","../riskmanagment/Data/gameData.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

var numberOfWorkers;

var x=xmlDoc.getElementsByTagName("game");
for (i=0;i<x.length;i++)
{
    if(x[i].getAttribute('id') == gameID)
    {
        this.gameName = x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
        this.numberOfWorkers = x[i].getElementsByTagName("numberOfWorkers")[0].childNodes[0].nodeValue;
        this.numberOfWorkersLeft = numberOfWorkers;
        this.overtimeWorkers = x[i].getElementsByTagName("overtimeWorkers")[0].childNodes[0].nodeValue;
        this.overtimeWorkersLeft = overtimeWorkers;
        this.difficulty = x[i].getElementsByTagName("difficulty")[0].childNodes[0].nodeValue;
        this.budget = x[i].getElementsByTagName("budget")[0].childNodes[0].nodeValue;
        this.gameTargetMinutes = x[i].getElementsByTagName("targetGameTime")[0].childNodes[0].nodeValue;
        this.gameTargetDays = x[i].getElementsByTagName("targetDays")[0].childNodes[0].nodeValue;
        this.gameLanguage = x[i].getElementsByTagName("language")[0].childNodes[0].nodeValue;
        this.projectDescriptionText = x[i].getElementsByTagName("description")[0].childNodes[0].nodeValue;
        this.wage = x[i].getElementsByTagName("wage")[0].childNodes[0].nodeValue;
        this.Owage = x[i].getElementsByTagName("Owage")[0].childNodes[0].nodeValue;
        this.numberOfRisks = x[i].getElementsByTagName("numberOfRisks")[0].childNodes[0].nodeValue;
    }
}

这就是我尝试获取数据的方式:

在头:

<script type="text/javascript" src="js/gameDataImport.js"></script>

在正文中,在脚本标签内:

numberOfWorkers = gameImport(gameID).numberOfWorkers;

但我只收到此错误:

未捕获的类型错误:无法读取未定义的属性“numberOfWorkers”

我没有尝试过多个变量,但会先尝试一个。

【问题讨论】:

  • 实际上......现在我阅读了 xmlhttp 请求,看起来你正在制作一个同步请求,所以我所说的没有任何内容是有效的(我删除了我的答案):-(
  • 是的,例如,我在发布到 php 时使用了 ajax 请求。而且我的 xmlrequests 在与其余代码相同的文件中使用时正在工作,所以我认为有这么多的更改很奇怪。还是谢谢
  • 但是忽略 statr 处理仍然不是一个好的方法。我不想为每个变量调用 gameImport,因为需要为每个变量加载一次 xml 文件。所以要么我想返回一个游戏对象,要么我想说: var game = new gameImport(2);然后 numberOfWorkers = game.numberOfWorkers;

标签: javascript xml external-js


【解决方案1】:

我不知道这是否有帮助,但我解决了这个问题,删除脚本的类型属性,如下所示:

<script src="js/gameDataImport.js"></script>

【讨论】:

  • 由于我不知道type属性的真正含义一直使用它,所以我一定会试试这个。
【解决方案2】:

您忘记了函数 GameImport 的右大括号

【讨论】:

  • 抱歉,帖子中缺少那个括号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2013-03-23
  • 2010-09-21
  • 2020-02-15
  • 2012-10-29
  • 1970-01-01
  • 2017-01-04
相关资源
最近更新 更多