在创建元素后将值添加到DOM元素

时间:2013-05-02 22:28:09

标签: javascript dom internet-explorer-10

我正在查看一些非常广泛的代码,用于从XML / XSL生成的网页,然后让Javascript动态生成布局。我遇到麻烦的是,似乎IE(特定于第10版)显示如果没有值则元素为空文本节点,然后如果有值则显示常规文本(无可编辑字段)。

这似乎改变了直接不可编辑文本的行为。

从我所看到的,第一步是让Javascript通过DOM生成元素

input = document.createElement("input");

input.setAttribute("id", "blah");
input.setAttribute("type", "text");

然后它会将它附加到父级。 然后似乎发生的是执行一个函数,该函数再次遍历页面并插入这些字段所具有的任何值。

input.value = "Hello World";

Chrome和Firefox会正确显示输入字段并填充其字段,但IE10只显示该值,就好像它只是纯文本一样。

我从未使用过这种网页生成,并希望有人能够帮助我解决这个问题,以便我可以解决这个问题。改变它的工作方式(当时)不是一个选项,所以我试图纠正它,以便IE也很高兴。

由于

1 个答案:

答案 0 :(得分:2)

此特定代码序列适用于我在其中尝试过的所有浏览器(Chrome,IE,Firefox):

var elem = document.createElement("input");
elem.type = "text";
elem.id = "test";
document.body.appendChild(elem);
elem.value = "This is some text";

如果您的确切代码偏离此,那么您应该检查差异或发布在IE中演示问题的确切代码序列,以便我们更好地了解如何调试或建议。

您可以在任何想要在此处尝试的浏览器中查看此工作演示:http://jsfiddle.net/jfriend00/z2FpP/

您的代码需要注意的事项:

  1. 父母的任何代码设置.innerHTML是否可以删除或重置子元素。
  2. .innerHTML字段本身的任何代码设置input。不应该这样做。代码应使用.value来设置input字段的文本。
  3. 代码在IE中运行时是否有代码错误?检查错误控制台或调试控制台(在IE中按F12进入可以看到错误控制台的调试器)。
  4. input字段中是否设置了其他可能使其成为只读而不是可编辑的属性?