繁体   English   中英

IE7中的Javascript InnerHTML与INPUT标签混淆

[英]Javascript InnerHTML in IE7 messing with INPUT tags

当我收到包含input [type = text]元素的元素的innerHTML时,将在IE7中删除值和id周围的语音标记,即

<input type="text" id="test" value="test" />

变为:

<input type="text" id=test value=test />

除了我正在使用一个采用html段并将JSON绑定到其上的JQuery插件之外,这还不错。 这意味着如果我有一个模板:

<div id="template"><input type="text"  value="${ValueToBind}" /></div>

当我通过document.getElementByID(“ template”)。innerHTML检索此文件时,我得到:

<input type="text"  value=${ValueToBind} />

因此,如果我用空格将字符串绑定,即“这是一个测试”,则输出为:

<input type="text"  value=this is a test />

显然,这是无效的html并导致我的应用程序崩溃。 我真正需要做的是按原样检索模板中的html,并且没有IE尝试做任何有用的操作,例如删除“语音标记”。

干杯,克里斯。

如果问题是特定于IE7的,则快速解决方法可能是使用重新插入引号的代码为IE7添加IE条件注释

我相信这不是您可以直接解决的问题,因为没有引号的html就是IE7内部表示DOM节点的方式。

我的最佳方式以确保您获得完全正确的模板是读取每个节点自己,而不是内部的HTML的每个属性,然后将它们写出来与引号。

看到

innerHTML删除Internet Explorer中的属性引号

对于其他想法。

使用jQuery的.html()

http://docs.jquery.com/Attributes/html

通常也将是执行此操作的“ jQuery方式”,而不是.getElementById

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM