名称中带有特殊字符的Javascript DOM节点

名称中带有特殊字符的Javascript DOM节点,javascript,dom,Javascript,Dom,更新:好的,这是一个编码/解码问题。在实际的源HTML中,ID呈现如下: <input type="text" id="addInput0436%2E20_0" name="quantity" value="1" /> javascript:app.catalog.product.updateAvailability('availabilityContainer0436%2E20_0','0436%2E20_0','PFC','0436.20', dojo.attr(dojox.h

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

<input type="text" id="addInput0436%2E20_0" name="quantity" value="1" />
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\u 0的编码值已被解码为addInput0436.20\u 0,这当然不再匹配

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

原职:

我正在尝试识别以下代码行的问题:

document.getElementById('addInput0436.20_0')
这将返回具有文档中确实存在但返回null的ID的DOM节点


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

我正在发布这个答案,以防它对其他人有所帮助:

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


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

句点在HTML ID值中是有效的。你能提供一个简短完整的例子,我可以在我的浏览器中作为HTML文件加载吗?@isherwood作为下划线。但是,一些js库在包含句点的ID上存在问题,因为它们被用作类选择器。尝试使用双反斜杠\\转义句点。我不知道它是否有效,但值得一试。似乎效果不错:@isherwood是的。你的肯定管用。。。也许OPs ID拼写错误,大小写错误。或者OP试图在页面完全加载之前获取ID。您的JS是否位于页面顶部?如果是这样,请尝试在关闭身体标签之前将其向右移动。你的html正在验证吗?这就是我能想到的。。。我希望其中一个能为OP工作!