JavaScript:输入类型=复选框可以在IE8中使用appendChild吗?

时间:2011-02-25 18:20:24

标签: javascript dom internet-explorer-8 input appendchild

根据http://msdn.microsoft.com/en-us/library/ms535934(v=VS.85).aspxhttp://msdn.microsoft.com/en-us/library/ms535262(v=VS.85).aspx,我应该可以执行以下操作来创建新的复选框:

var answer = document.createElement('input');
answer.setAttribute('type', 'checkbox');
answer.setAttribute('id',   'answer');
answer.setAttribute('value', 'a');
answer.appendChild(document.createTextNode('test'));

这适用于Firefox和Chrome,但在IE 8中,最后一次函数调用会产生以下错误消息:

Error: Unexpected call to method or property access.

我尝试使用 innerText 属性来绕过此功能,但此方法会收到相同的错误消息。

我做错了吗?如果是这样,什么?如果没有,我怎么能规避看似无稽之谈呢?

2 个答案:

答案 0 :(得分:3)

我认为您不想在复选框中添加文本节点。相反,我会使用带有两个子节点的标签对象:复选框输入和文本节点:

var answer = document.createElement('input');
answer.setAttribute('type', 'checkbox');
answer.setAttribute('id',   'answer');
answer.setAttribute('value', 'a');
var answerLabel = document.createElement('label');
answerLabel.setAttribute('for','answer'); // this corresponds to the checkbox id
answerLabel.appendChild(answer);
answerLabel.appendChild(document.createTextNode(' test'));
document.body.appendChild(answerLabel);

答案 1 :(得分:1)

您可以使用:

var label = document.createElement('label');
label.answer;
label.appendChild(document.createTextNode('test'));