document.getElementById在IE11中不起作用 [英] document.getElementById Not working in IE11
问题描述
大家好,
我有一个ASP.NET Datagrid,我正在使用javascript for循环,如下所示。
for (i = 0 ; i< len; i ++){
var inputelements = dgGridname.rows [i] .cells [ 1 ]。getElementsByTagName(' 输入跨度>);
var max = inputelements.length;
if (max> 0 ){
document .getElementById(inputelements [ 0 ]。name).value = document .getElementById(inputelements [ 1 ]。name).value
}
}
当我在IE8中运行此工作正常但在IE11中我正在获得
document .getElementById(inputelements [ 0 ]。name)
为null或undefined。我不知道如何解决IE11的问题。任何人都可以帮忙。
线索在方法名称中 -getElementBy Id
,而不是getElementBy 名称
。
尝试传递输入元素的ID,而不是其名称:
document .getElementById(inputelements [ 0 ]。id)
< blockquote class =quote>
在IE8标准模式下,getElementById仅对ID属性执行区分大小写的匹配。在IE7标准模式和以前的模式中,此方法对ID和NAME属性执行不区分大小写的匹配,这可能会产生意外结果。
编辑:实际上,您根本不需要调用 getElementById
- 您已经拥有该元素 inputelements
数组:
var inputelements = dgGridname .rows [i] .cells [ 1 ]。getElementsByTagName(' 输入跨度>);
if (inputelements.length> 1 ){
inputelements [ 0 ]。value = inputelements [ 1 ]。value;
}
Hi All,
I have a ASP.NET Datagrid and I am using javascript for loop like below.
for (i = 0; i < len; i++) {
var inputelements = dgGridname.rows[i].cells[1].getElementsByTagName('input');
var max = inputelements.length;
if (max > 0) {
document.getElementById(inputelements[0].name).value= document.getElementById(inputelements[1].name).value
}
}
when I run this in IE8 working fine but where as in IE11 I am getting
document.getElementById(inputelements[0].name)
as null or undefined. I am not sure how to fix this for IE11. can anyone please help.
The clue is in the method name -getElementById
, notgetElementByName
.
Try passing the ID of the input element, instead of its name:
document.getElementById(inputelements[0].id)
In IE8 Standards mode, getElementById performs a case-sensitive match on the ID attribute only. In IE7 Standards mode and previous modes, this method performs a case-insensitive match on both the ID and NAME attributes, which might produce unexpected results.
EDIT: Actually, you don't need to callgetElementById
at all - you already have the element in theinputelements
array:
var inputelements = dgGridname.rows[i].cells[1].getElementsByTagName('input'); if (inputelements.length > 1) { inputelements[0].value = inputelements[1].value; }
这篇关于document.getElementById在IE11中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!