Javascript DOM节点名称中包含特殊字符

时间:2014-09-16 16:54:45

标签: javascript dom

UPDATE:好的,这是一个编码/解码问题。在实际的SOURCE HTML中,ID呈现如下:

<input type="text" id="addInput0436%2E20_0" name="quantity" value="1" />

引用它的Javascript呈现如下:

javascript:app.catalog.product.updateAvailability('availabilityContainer0436%2E20_0','0436%2E20_0','PFC','0436.20', dojo.attr(dojox.html.entities.decode('addInput0436%2E20_0'), 'value'));

但是,当Javascript调用到达dojo.attr()例程时,addInput0436%2E20_0的编码值已被有效地解码为addInput0436.20_0,当然不再匹配。

所以我需要强制JS不解码这个字符串,或强制HTML / Tomcat不编码HTML ID。啊。

原始帖子:

我试图通过以下代码行识别问题:

document.getElementById('addInput0436.20_0')

这应该返回带有该ID的DOM节点(文档中确实存在),而是返回null

我怀疑它是节点名称中的特殊字符,但我不确定如何修复它。有没有人遇到过这个?

1 个答案:

答案 0 :(得分:0)

我发布此答案以防其他人:

我们最终通过在需要它的Javascript例程中重新编码(先前解码的)标记ID来解决这个问题。我们无法找到任何其他解决此问题的方法。

底线:不要使用URL编码的字符串作为标记ID名称。这样做似乎是在寻找麻烦。