1

http://msdn.microsoft.com/en-us/library/ms535934(v=VS.85).aspxおよびhttp://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属性を使用してこれをバイパスしようとしましたが、このアプローチでは同じエラーメッセージが表示されます。

私は何か間違ったことをしていますか?もしそうなら、何ですか?そうでない場合、どうすればナンセンスと思われるものを回避できますか?

4

2 に答える 2

3

チェックボックスにテキストノードを追加したくないと思います。代わりに、チェックボックスの入力ノードとテキスト ノードの 2 つの子ノードを持つラベル オブジェクトを使用します。

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);
于 2011-02-25T18:51:01.760 に答える
1

以下を使用できます。

var label = document.createElement('label');
label.answer;
label.appendChild(document.createTextNode('test'));
于 2011-02-25T18:27:14.287 に答える