如何使用Javascript在IE中创建一个已检查的单选按钮?

时间:2010-05-12 02:28:34

标签: javascript html

我试图通过在IE7中使用以下代码来创建一个已检查的radiobutton。但它不起作用。

var x = document.createElement("input");
x.type="radio";
x.checked=true; //I also tried setAttribute here which doesn't work either.

var spn=document.createElement("span");
spn.appendChild(x);

document.body.appendChild(spn);

我发现我可以在appendChild语句之后添加x.checked=true以使其正常工作。我还注意到,当我将“radio”改为“checkbox”时,可以在不改变语句顺序的情况下检查它。

我对这些事实感到困惑。我在上面的代码中做错了吗?

解决方案:最后,我理解这是一个IE错误。将新的单选按钮附加到其父级时,将清除已检查的属性。所以,我必须调用“x.checked = true;”作为最后的陈述。

5 个答案:

答案 0 :(得分:2)

这是一个奇怪的IE浏览器......你需要使用innerHTML或IE的扩展createElement,因为“expando”属性在单选按钮上不起作用。 http://cf-bill.blogspot.com/2006/03/another-ie-gotcha-dynamiclly-created.html

答案 1 :(得分:1)

var x = document.createElement("input");
x.setAttribute('defaultChecked', 'defaultChecked');
x.type="radio";


var spn=document.createElement("span");
spn.appendChild(x);

document.body.appendChild(spn);

这应该可以解决问题。

答案 2 :(得分:0)

这不是jQuery:你必须自己构建属性:

var x = document.createElement("input");
x.type = 'radio';
x.checked = true;

答案 3 :(得分:0)

但如果是jQuery:

$(document).ready(function() {
    var x = $("<input type='radio' checked='checked' value='value'/>");
    $("body").append($("<span></span>").append(x));});

答案 4 :(得分:0)

var input = document.createElement("input");
input.setAttribute("type", "radio");
input.setAttribute("checked", "checked");

var span = document.createElement("span");
span.appendChild(input);

document.body.appendChild(span);