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
。
我怀疑它是节点名称中的特殊字符,但我不确定如何修复它。有没有人遇到过这个?
答案 0 :(得分:0)
我发布此答案以防其他人:
我们最终通过在需要它的Javascript例程中重新编码(先前解码的)标记ID来解决这个问题。我们无法找到任何其他解决此问题的方法。
底线:不要使用URL编码的字符串作为标记ID名称。这样做似乎是在寻找麻烦。