FF、Chrome中的innerHTML问题.IE很好



我有一个页面,在这个页面上,按下按钮会动态加载输入。当按下按钮时,我将源代码添加到容器元素的innerHTML中。

所以,如果你按下它一次,它就会包含。如果你再按一次,它会添加第二个,名称为"inp-2"。

问题是,如果你添加一个输入,用一些文本填充它,然后再次按下添加按钮,插入的文本就会消失,因为——至少我认为是这样——它保留了原始的innerHTML,其中不包含插入的文本。这种情况正在FF、Chrome中发生。在IE中,它工作得很好,因为IE的innerHTML是由用户的交互更新的;如果你填写一个输入,然后查看源代码,那么你会看到你的文本在输入的值属性中,而不是像在FF或Chrome中那样。

你有什么建议,如何以最快速、最有效的方式解决这个问题?请记住,我已经将代码简化为单个输入,但每次按下按钮,都会在innerHTML中添加一个巨大的源代码(1个表包含trs、tds、大约9个输入和文本)。感谢

如果您想继续使用.innerHTML,而不是实际附加节点的DOM方法,则需要向这些输入添加"更改"事件处理程序。浏览器不需要同步<input/>value属性和value属性,但您的事件处理程序可以通过跨浏览器的方式进行同步。

试试这样的东西。innerHTML应该在每次更新属性时进行更新。

node.innerHTML += '<input name="inp-#" value="starting_value" onchange="this.setAttribute('value',this.value);" />';

最新更新