Javascript 在IE中设置DOM创建元素的名称失败--解决方法?
今天我有点难受:Javascript 在IE中设置DOM创建元素的名称失败--解决方法?,javascript,jquery,dom,internet-explorer,Javascript,Jquery,Dom,Internet Explorer,今天我有点难受: function mk_input( name, val ) { var inp = document.createElement( 'input' ); inp.name = name; inp.value = val; inp.type = 'hidden'; return inp; } 事实证明,通过createElement创建的元素的名称设置在IE中不起作用。它不会导致错误或任何事情,只是默默地失败了,导致人们思考他们的隐藏
function mk_input( name, val ) {
var inp = document.createElement( 'input' );
inp.name = name;
inp.value = val;
inp.type = 'hidden';
return inp;
}
事实证明,通过createElement
创建的元素的名称设置在IE中不起作用。它不会导致错误或任何事情,只是默默地失败了,导致人们思考他们的隐藏字段没有正确填充的原因
据我所知,没有解决办法。您只需咬紧牙关,通过字符串操作创建
标记,并使用.innerHTML
将其插入即可
有更好的办法吗?也许用jQuery之类的东西?我粗略地搜索了一下,没有在JQuery中找到任何与createElement
完全相似的内容,但可能遗漏了一些内容。他们在IE8中解决了这个问题。在以前的版本中,调用createElement时需要包含名称。发件人:
Internet Explorer 8及更高版本可以设置
上运行时的NAME属性
使用
IHTMLDocument2::createElement方法。
创建具有名称的元素的步骤
的早期版本中的属性
Internet Explorer,包括
属性及其在使用
IHTMLDocument2::createElement方法
以下是来自以下方面的示例:
var newRadioButton=document.createElement(“”)
只是重复这个问题:在IE中,通过编程在通过文档创建的元素上设置名称
属性。createElement('input')
不会反映在getElementsByName
,表单中。元素
(如果附加到表单中),并且不会随表单一起提交(同样,如果附加到表单中)[]
以下是我过去使用过的变通方法(根据您的问题进行了调整):
(作为旁注,在幕后jQuery正在做你在问题中描述的事情:它创建一个虚拟的
,并将其innerHTML
设置为,如果你在DOM中设置节点名称,它会起作用吗?@Fabien,不,这也不起作用。谢谢,这正是我要寻找的信息。我真的讨厌混合。)在Javascript中使用HTML字符串操作,但我似乎没有选择余地:(
var newRadioButton = document.createElement("<INPUT TYPE='RADIO' NAME='RADIOTEST' VALUE='First Choice'>")
function mk_input( name, val ) {
var inp;
try {
inp = document.createElement('<input type="hidden" name="' + name + '" />');
} catch(e) {
inp = document.createElement("input");
inp.type = "hidden";
inp.name = name;
}
inp.value = val;
return inp
}
function mk_input( name, val ) {
return $('<input type="hidden" name="' + name + '" />')
.val(val)
.get(0)
}