Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在IE中设置DOM创建元素的名称失败--解决方法?_Javascript_Jquery_Dom_Internet Explorer - Fatal编程技术网

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)
}