【问题标题】:document.getElementbyId is not working in IE 11document.getElementbyId 在 IE 11 中不起作用
【发布时间】:2014-12-30 20:06:33
【问题描述】:

我正在尝试获取整个 div 内容并使用 document.getElementById 在警报消息中显示。它在 IE 8 和 9 中运行良好,但在 IE 10 和 11 中运行良好。

下面是正在使用的代码sn-p。

<body>
  <div id="oDiv1"><input type="text" ></div>
  <div id="oDiv2">Div #2</div>
  <div id="oDiv3">Div #3</div>
  <input type="button" value="Show First DIV Content" onclick="fnGetId()">
</body>

Javascript 代码

<script type="text/javascript">
     function fnGetId() {
             var oVDiv=document.getElementById("oDiv1").innerHTML;
             alert(oVDiv);    
    }
</script>

我在那个文本框中输入了一些文本。在 IE 8 和 9 中,它采用 oDiv1 内容以及我输入的文本。如下图

<input type="text" value="aaa">

但在 IE 10 和 11 中,它采用输入标签而不是我输入的值。

<input type="text" value="">

我哪里错了?如何获取内容以及我在 IE11 中输入的值?

【问题讨论】:

  • 你不是,IE 10 和 11 是符合标准的。在文本输入中输入值不应更改值 attribute,这反映了标记中的默认值,它会更改值 property。所以你在 innerHTML 中看到的是 value 属性的值,而不是 value 属性的值。
  • 你查看过这个网站吗? msdn.microsoft.com/en-us/library/ie/bg182625%28v=vs.85%29.aspx 根据他们的文档,您正在使用标准恭维

标签: javascript html dom internet-explorer-11


【解决方案1】:

因为你没有得到正确的价值,也没有得到正确的元素。这是一个 hacky 解决方案。

var oVDiv=document.getElementById("oDiv1").children[0].value;

更好的模式是创建一个真实的表单,并在提交时序列化表单值。

JSfiddle example

【讨论】:

  • 那不一定是真的。如果他想做表单验证,那么他需要能够动态检查变量。
  • @Kamran224 如果验证失败,则在提交事件处理程序处返回false,或调用preventDefault
  • @self children[0].value 当我在那个 div 中有一个输入标签时没问题。但是如果那个div里面还有两个input标签和select标签,那么这样就行了?
  • @Vignesh 它会工作,但它只会获取第一个元素。您可以遍历数组并获取所有值,但是您必须检查它们的元素类型才能获得正确的值,尤其是对于 &lt;select&gt; 框。我会按照我的建议使用真实的表格来完成工作,而不是走很长的路。
  • @self 但它只取文本框中的值。我需要打印该 div 中的整个 html 以及 value 属性中的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 2015-05-06
  • 2016-10-13
  • 2018-03-29
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多