【发布时间】: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