JavaScript 读取 XML 是完全错误的
JavaScript reads XML totally wrong
我正在开发一个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 属性(,并且它总是比实际的节点数更多。
- 使用
textContent
而不是nodeValue
。前者返回正确的值,例如"0,0,0"
。 - 由于文本节点也是子节点,因此应跳过它们(检查节点的
nodeType
(。这些正在用孔填充您的阵列,并使它们比需要的更大。文本节点基本上是缩进的空格。解决此问题将需要额外的计数器。 - 使用正常的
for
循环,而不是for in
循环。
http://jsfiddle.net/DhKJr/
相关文章:
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 未捕获的类型错误:无法读取属性'name'即使它存在,也无法定义
- 看到“;未捕获的类型错误:无法读取属性'weight'未定义的“;尽管按照字面上的指示
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 未捕获的类型错误:无法读取属性'状态'在react中为null
- 未捕获的类型错误:无法读取属性'中止'的未定义
- Javascript未捕获类型错误:无法读取属性'0'的未定义
- jQuery控制台错误:无法读取属性'top'的未定义
- 未捕获的类型错误: 无法读取未定义的属性“图像”
- 我该如何解决这个问题?“未捕获的类型错误:无法读取 null 的属性'appendChild'”
- json-api和错误结果:无法读取属性'长度'的未定义
- VM5111:1249未捕获类型错误:无法读取属性'x'为null
- 未捕获的类型错误:无法读取属性'道具'reactJS中未定义的
- 类型错误:无法读取未定义的属性“toString” - 为什么
- 未捕获的语法错误:读取JSON文件时出现意外的标记
- if, else if, and else"我的代码条件被错误读取
- 401未经授权的错误读取Azure移动服务表作为认证的用户(Javascript)
- node.js错误:读取ECONNRESET