У меня есть код Ajax, который возвращает элементы списка как

<li>one</li>
<li>Two</li>

Каждый раз он будет возвращать различное количество <li>. Я хочу проверить количество <li>, которое он возвращает. Как это проверить используя Javascript. Пожалуйста помоги.

2
Rajasekar 13 Сен 2010 в 09:19

6 ответов

Лучший ответ

Вот и я:

$(returnedHTML).find('li').length

Он принимает возвращенный HTML и учитывает только позиции внутри него.

7
Erik 13 Сен 2010 в 05:43

ИСПРАВЛЕНО: Некоторые люди думали, что я считаю LI по событию нажатия ссылки, а также не считаю его по ответу html. Вот отредактированный ответ.

Если вы получили ответ html примерно так:

< Сильный > myhtml.html :

<ul>
  <li>One</li>
  <li>Two</li>
  <li>Three</li>
</ul>

Тогда ваша часть jQuery может выглядеть следующим образом:

$.get('myhtml.html', function(data) {
   alert( $(data).find("li").length ); // 3
});
-2
Naveed 22 Сен 2010 в 04:34

Если список, который вы хотите протестировать, поступает как строка из запроса AJAX, вы просто будете рассматривать его как строку, а не как набор объектов DOM.

Взгляните на этот кусочек кода.

var input = "<li>one</li><li>Two</li>";
var pattern = /<li>/gi;

var match;
var count = 0;
while(match = pattern.exec(input)) {
    count++;
}

alert("There are "+count+" occurences of <li> in the input string.");

Здесь я использую регулярное выражение, чтобы найти случаи <li> без учета регистра (просто чтобы быть уверенным) и глобально (обрабатывать всю строку как один блок текста для поиска).

0
Joel Verhagen 13 Сен 2010 в 05:35

Если вам нужно посмотреть в конкретный список, jQuery делает это просто:

$ ("DIV_NAME> ul> li"). Длина

0
ChrisCast 13 Сен 2010 в 05:28

Попытался ли ты:

var elements = document.getElementsByTagName('li');
var count = elements.length;
1
Darmen Amanbayev 13 Сен 2010 в 05:22

ajaxHtml.split('<li').length - 1 для подсчета необработанного HTML AJAX.

Или element.getElementsByTagName("li").length (где element является родительским контейнером для тегов LI.)

4
tidwall 13 Сен 2010 в 05:45