#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
это то, что вы, вероятно, хотите.