JavaScript: может ли тип ввода = флажок использовать appendChild в IE8 или нет? - PullRequest
1 голос
/ 25 февраля 2011

Согласно 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 , но этот подход получает то же сообщение об ошибке.

Я что-то не так делаю?Если да, то?Если нет, то как я могу обойти то, что кажется бессмысленным?

Ответы [ 2 ]

3 голосов
/ 25 февраля 2011

Не думаю, что вы хотите добавить текстовый узел к вашему флажку. Вместо этого я бы использовал объект метки с двумя дочерними узлами: флажок ввода и текстовый узел:

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 голос
/ 25 февраля 2011

Вы можете использовать:

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