我试图通过在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;”作为最后的陈述。
答案 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);