使用纯Javascript创建input type=radio并按名称检索它们(ie9上的ie7标准)

使用纯Javascript创建input type=radio并按名称检索它们(ie9上的ie7标准),javascript,html,internet-explorer,Javascript,Html,Internet Explorer,此脚本适用于IE9: var newAnswer = document.createElement("input"); newAnswer.setAttribute("type","radio"); newAnswer.setAttribute("id","1"); newAnswer.setAttribute("name","answers"); 并生成此html: <input name="answers" id="1" type="radio" value="1"/> 那么

此脚本适用于IE9:

var newAnswer = document.createElement("input");
newAnswer.setAttribute("type","radio");
newAnswer.setAttribute("id","1");
newAnswer.setAttribute("name","answers");
并生成此html:

<input name="answers" id="1" type="radio" value="1"/>
那么getElementsByName不起作用了,为什么IE(文档模式ie7标准)要创建这个属性“submitName”?这是预期的行为吗?我可以让代码在文档模式ie7下工作,就像它在ie9模式下工作一样吗


我已经读了几个问题的答案,但我不明白。

好的,从上一个开始,这一个我刚刚测试过,它在IE7中工作

var testName = null;
function createElementWithName (type, attrs) {
    if(testName ===null) {
        try{
            var x = document.createElement("<input />");
            testName = false;
        } catch(e) {
            testName = true;
        }
    }
    var htmlStr = testName || !attrs.name ? type : '<' + type + ' name="' + attrs.name + '">';
    var elem = document.createElement(htmlStr);    
    for (var prop in attrs) {
         elem.setAttribute(prop, attrs[prop]);   
    }    
    return elem;
}


var attrs = { type: "radio", name: "answers" };

attrs.id="foo1";
var newAnswer1 = createElementWithName("input", attrs);

attrs.id="foo2";
var newAnswer2 = createElementWithName("input", attrs);

attrs.id="foo3";
var newAnswer3 = createElementWithName("input", attrs);

document.getElementById("xxx").appendChild(newAnswer1);
document.getElementById("xxx").appendChild(newAnswer2);
document.getElementById("xxx").appendChild(newAnswer3);
var testName=null;
函数createElementWithName(类型,属性){
if(testName==null){
试一试{
var x=document.createElement(“”);
testName=false;
}捕获(e){
testName=true;
}
}
var htmlStr=testName | |!attrs.name?类型:“”;
var elem=document.createElement(htmlStr);
for(属性中的var prop){
元素setAttribute(prop,attrs[prop]);
}    
返回元素;
}
var attrs={type:“radio”,name:“answers”};
attrs.id=“foo1”;
var newAnswer1=createElementWithName(“输入”,attrs);
attrs.id=“foo2”;
var newAnswer2=createElementWithName(“输入”,attrs);
attrs.id=“foo3”;
var newAnswer3=createElementWithName(“输入”,attrs);
文件.getElementById(“xxx”).appendChild(新答案1);
文件.getElementById(“xxx”).appendChild(新答案2);
文件.getElementById(“xxx”).appendChild(新答案3);

jsiddle:

试试这个:
newAnswer.setAttribute(“name”,“answer”,0)@cookiemonster第三个参数是什么“我以前从未见过它。”穆罕默德·里贝西迪基:我也没有。刚刚遇到这个。它似乎设置了IE中区分大小写的处理方式。但不确定它是否解决了这个问题。指向一个博客,该博客展示了解决此问题的技巧。有关信息,请参阅。我也发现了。
var answers = document.getElementByName("answers");
var testName = null;
function createElementWithName (type, attrs) {
    if(testName ===null) {
        try{
            var x = document.createElement("<input />");
            testName = false;
        } catch(e) {
            testName = true;
        }
    }
    var htmlStr = testName || !attrs.name ? type : '<' + type + ' name="' + attrs.name + '">';
    var elem = document.createElement(htmlStr);    
    for (var prop in attrs) {
         elem.setAttribute(prop, attrs[prop]);   
    }    
    return elem;
}


var attrs = { type: "radio", name: "answers" };

attrs.id="foo1";
var newAnswer1 = createElementWithName("input", attrs);

attrs.id="foo2";
var newAnswer2 = createElementWithName("input", attrs);

attrs.id="foo3";
var newAnswer3 = createElementWithName("input", attrs);

document.getElementById("xxx").appendChild(newAnswer1);
document.getElementById("xxx").appendChild(newAnswer2);
document.getElementById("xxx").appendChild(newAnswer3);