我正在创建一个html元素并以编程方式分配id和name值,稍后当我尝试按名称访问这些元素时,它不会返回任何值 例如,我创建一个html输入元素并指定id =“Number_1”和name =“Name_1”
document.getElementsByName("Name_1").length is always 0
以下代码的作用并返回正确的值
document.getElementById("Number_1" ).name = "Name_1"
为什么会这样?
var count = 0;
for(var i =0;i<SomeValue;i++){
count++;
var cell = row.insertCell(i);
cell.className = "lineItemTable";
var inputElement = document.createElement("input");
inputElement.type = "text";
inputElement.id = "Number_"+count;
inputElement.name="Name_"+count;
cell.appendChild(inputElement);
}
答案 0 :(得分:1)
在Internet Explorer中,创建元素后无法添加“名称”:
var inputElement = document.createElement("<input name='Name_" + count + "'>");
您必须像这样创建它,在“html”中提供名称作为属性。
编辑 - 确定这很丰富。
在某些时候,微软在他们的“Compat Cookbook”中发布了this note。关键点:
从Windows Internet Explorer 9开始,当您使用尖括号(&lt;&gt;)时,createElement会触发“找不到对象”异常。
该注释包含指向documentation for the createElement
method的链接,仍然坚持只能使用“eTag”文本设置“NAME”属性,如上例所示。
因此看起来你需要做的是这样的事情:
function makeInput( name ) {
try {
return document.createElement("<input name='" + name + "'>");
}
catch (x) {
var inp = document.createElement("input");
inp.name = name;
return inp;
}
}