Как я могу вызвать элемент из массива, созданного методом «document.getElementBytag ()»? - PullRequest
0 голосов
/ 16 апреля 2011

Я пытаюсь заставить страницу работать на моем сайте, используя фреймворк mootools.Я искал повсюду, где я могу найти ответы на вопрос, почему это не работает, но они оказались пустыми.

Я хочу заполнить несколько массивов различными типами данных из HTML, а затем, вызываяэлементы из каждого массива по порядковому номеру, динамически связывают и управляют этими элементами внутри функций.Я тестировал простой фрагмент кода ниже в утилите mootools jsfiddle.Попытка вызова элемента из массива «region» напрямую возвращает «undefined», а попытка вернуть порядковый номер элемента возвращает нулевое значение «-1».

Я не могу получить полезные данные из этого массива,Я могу подумать о трех возможных причинах, почему, но не могу понять, как определить, что на самом деле здесь происходит: 1. Возможно, этот массив вообще не заполнен какими-либо данными.2. Возможно, он заполняется, но я неправильно понимаю, какие данные получаются с помощью «document.getElementBytag ()», и поэтому данные не могут быть отображены с помощью оператора «document.writeln ()».(Или я вынужден рабски создавать все свои массивы?) 3. Возможно, проблема в том, что созданный таким образом массив не индексируется.(Или я могу что-то сделать, чтобы проиндексировать этот массив?)

html:<div>Florida Virginia</div><div>California Nevada</div><div>Ohio Indiana</div><div>New York Massachussetts</div><div>Oregon Washington</div>

js:var region = $$('div');document.writeln(region[2]);document.writeln(region.indexOf('Ohio Indiana'));

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

1 Ответ

2 голосов
/ 16 апреля 2011

$$ вернет список элементов DOM.Если вас интересует только текст этих узлов DOM, то сначала извлеките этот бит.Как отметил @Dimitar в комментариях, вызов get для объекта Elements вернет массив, возможно, путем итерации по каждому элементу в коллекции и получения соответствующего свойства.

var region = $$('div').get('text');

console.log(region[2]);                      // Ohio Indiana
console.log(region.indexOf('Ohio Indiana')); // 2

Такжеиспользуйте console.log вместо document.writeln или document.write, причина в том, что вызов этой функции очистит весь документ и заменит его любой строкой, которая была передана.

См. пример .

...