Мне трудно сослаться на правильный узел DOM через Javascript.В чем проблема? - PullRequest
0 голосов
/ 08 января 2011

Вот код:

<script type="text/javascript">
document.write(document.getElementsByTagName("select").value);
</script>
<form>
<select value="slct">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</form>

Остальное было отредактировано для краткости. Я пытался использовать «nodeValue» и «значение» в конце строки без успеха. Когда я вырезаю значение, оно выдает «[объект]».

Я знаю, что, скорее всего, я упускаю что-то очевидное, но мне кажется, что я не могу уменьшить ссылки на элементы. Я пытаюсь создать флажок, который включает раскрывающийся список, но я все еще застреваю в этой точке перехода.

Спасибо заранее.

Ответы [ 3 ]

5 голосов
/ 08 января 2011
  1. Элемент не существует на момент вызова document.getElementsByTagName.Переместите скрипт после элемента select или отложите его (например, сделав его функцией, которую вы вызываете onload ... за исключением того, что вы используете (некрасиво, проблематично, лучше избегать) document.write, который не очень хорошо играет после загрузкисобытие запускается.
  2. document.getElementsByTagName возвращает NodeList, а не один узел DOM, поэтому у него не будет свойства value
  3. value не поддерживается кросс-браузерно для выбранных элементовПолучите selectedIndex, используйте его, чтобы получить выбранный элемент option, затем получите значение этого элемента.
0 голосов
/ 08 января 2011

getElementsByTagName() возвращает NodeList элементов, а не один элемент.Чтобы получить .value, вы должны обратиться к одному из элементов (как к массиву), например,

document.write(document.getElementsByTagName("select")[0].value);

Обратите внимание, что возвращается список, даже если на вашей странице есть только один элемент select.

0 голосов
/ 08 января 2011

Ваша проблема в том, что getElemenstByTagName возвращает список узлов. попробовать

document.write(document.getElementsByTagName("select")[0].value

Предполагая, что это первый выбор в вашем документе. Вы также можете использовать getElementById, если добавляете в идентификатор атрибут id.

...