使用外部JS从XML导入数据

时间:2014-12-26 23:57:09

标签: javascript xml external-js

我的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>

在body中,在脚本标记内:

numberOfWorkers = gameImport(gameID).numberOfWorkers;

但我只收到此错误:

未捕获的TypeError:无法读取属性&#39; numberOfWorkers&#39;未定义的

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

2 个答案:

答案 0 :(得分:0)

你已经忘记了GameImport函数

的结束花括号

答案 1 :(得分:0)

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

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