document.getElementById (''). length = 0 не работает под Win7 - PullRequest
0 голосов
/ 18 мая 2010

У меня есть список выбора:

<select id="sel">
     <option>text1</option>
     <option>text2</option>
     <option>text3</option>
     <option>text4</option>
</select>

Я хочу удалить все элементы без цикла for. Я попробовал:

document.getElementById('sel').length = 0;

Но это не работает в некоторых браузерах.
Есть идеи?

Спасибо

Ответы [ 2 ]

7 голосов
/ 18 мая 2010
document.getElementById( 'sel' ).innerHTML = '';

Удалено из комментария:

Вы должны понимать такое свойство length, которое больше похоже на свойство только для чтения, которое дает вам информацию о состоянии объекта. Например, когда вы получаете длину массива. Изменение этого значения, однако, не влияет на реальный объект, в то время как правильное удаление элемента заставит браузер повторно отрендерить DOM для этого элемента (и, как таковое, обновить значение). Я предполагаю, что некоторые браузеры могут интерпретировать, что установка длины в ноль очистит этот объект, но в целом это не должно быть ожидаемым поведением. Также я думаю, что Element.length на самом деле не является частью спецификации DOM.

Чтобы добавить к этому некоторые ссылки, ядро ​​ DOM Element не имеет никакого параметра длины. И HTMLSelectElement , и HTMLOptionsCollection (к которым можно обратиться через HTMLSelectElement.options) имеют атрибут длины, но установка его должна вызвать DOMException .

Так что в обоих случаях установка длины недопустима по стандарту и поэтому не должна использоваться, если вы хотите поддерживать большинство браузеров.

4 голосов
/ 18 мая 2010

Любая из этих работ:

document.getElementById('sel').options.length = 0;

или

document.getElementById('sel').innerHTML = "";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...