В IE элементы массива Javascript не определены

#javascript #arrays #internet-explorer #sorting

#javascript #массивы #internet-explorer #сортировка

Вопрос:

У меня есть страница, которая содержит неупорядоченный список ссылок. Я пытаюсь отсортировать этот список в алфавитном порядке по тексту ссылки. Мой javascript работает в Firefox и Chrome, но не в IE. IE перезаписывает исходный текст ссылки на undefined.

Мой скрипт сначала находит тег ul, затем получает все ссылки a по имени тега и помещает их в массив lis. Затем следует этот цикл, в котором я беру текст ссылки и помещаю его во второй массив vals, чтобы я мог их отсортировать. Я думаю, что именно здесь возникает проблема.

для(var i = 0, l = lis.длина; i < l; i )

vals.push(lis[i].text);

Насколько я могу судить, IE не думает, что .text существует. Я видел кое-что в другом сообщении, в котором предлагалось изменить его на .text() , но это не сработало ни в одном браузере.

Как я могу заставить IE сортировать мои ссылки?

Полный текст скрипта

Ответ №1:

.text это не стандартное свойство, которое работает везде. Вместо этого вы можете использовать .innerHTML вот так:

 vals.push(lis[i].innerHTML);
  

Или, если вам просто нужен текст, вы можете использовать это:

 vals.push(lis[i].textContent || lis[i].innerText);
  

Некоторые браузеры поддерживают innerText , некоторые поддерживают textContent . Эта строка кода возвращает то, что не определено. Вы можете увидеть, какие браузеры какие поддерживают здесь: http://www.quirksmode.org/dom/w3c_html.html.

Комментарии:

1. .text() это метод jQuery. Поскольку здесь нет jQuery, .innerHTML это то, что вы, вероятно, хотите.