我正在开发一个HTML5/Canvas游戏引擎,但我被卡住了。引擎通过平铺集绘制地图,并从XML文档中读取地图数据,如下所示:
<map>
<layer id="-1">
<row>0,0,0</row>
<row>1,1,1</row>
<row>0,0,0</row>
</layer>
<layer id="1">
<row>0,0,0</row>
<row>1,1,1</row>
<row>0,0,0</row>
</layer>
</map>以及在二维数组中加载数据的JavaScript:
var layers = xml.getElementsByTagName("layer");
for(var i in layers)
{
var rows = layers[i].childNodes;
for(var j in rows)
{
array[i][j] = rows[j].nodeValue;
}
}问题:返回的数据只是"null“、"”和"undefined“的混搭。此外,数组似乎比必要的小,因为在遍历所有值之前,我检查了节点的数量(使用length属性),并且它总是比实际的节点数量多。
发布于 2012-05-20 05:06:19
textContent而不是nodeValue。前者返回正确的值,比如"0,0,0".nodeType)。它们在你的数组中填满了空洞,使它们变得比需要的更大。文本节点基本上是缩进的空格。解决这个问题需要额外的计数器。for循环,而不是for in循环。http://jsfiddle.net/DhKJr/
https://stackoverflow.com/questions/10668829
复制相似问题