создайте html-таблицу с помощью xml-ответа jQuery
-
19-09-2019 - |
Вопрос
Я пытаюсь выполнить итерацию ответа на запрос jQuery Ajax (возвращаемый в виде XML).
С помощью этого ответа я создаю HTML-таблицу с 3 столбцами (способную содержать неограниченное количество строк).Как только найден 4-й XML-узел / "company", с него должна начинаться новая строка в таблице.Больше всего ценится любая помощь с JS для определения того, когда следует добавить новую строку.Спасибо!
Пример JS:
/* jQuery Ajax Call here */
success: function(xml){
var trow = $("<tr>");
$(xml).find("Company").each(function(index){
var cellData = "<td width=\"33%\" valign=\"top\" ><div class=\"container\">"+
"<div class=\"item\"><a href=\"#\" title=\"\" target=\"\">"+ $(this).attr("Name")+ "</a></div>"+
"<div class=\"description\">"+ $(this).attr("Description") + "</div></div></div></td>";
$(cellData).appendTo(trow);
});
trow.appendTo('#tbl');
}
});
});
Пример XML-ответа от веб-службы:
<Companies>
<Company ID="6" Name="Company name 1" Description="Lorem ipsum" />
<Company ID="22" Name="Company name 2" Description="Lorem ipsum" />
<Company ID="28" Name="Company name 3" Description="Lorem ipsum" />
<Company ID="31" Name="Company name 4" Description="Lorem ipsum" />
</Companies>
Решение
Оператор по модулю отлично подходит для подобных вещей.По сути, он делит одно число на другое и возвращает остаток.Итак 1 % 4 = 1
и 4 % 4 = 0
и 8 % 4 = 0
:
success: function(xml){
var trow = $("<tr>"), table = $("#tbl");
$(xml).find("Company").each(function(index){
var cellData = "<td width=\"33%\" valign=\"top\" ><div class=\"container\">"+
"<div class=\"item\"><a href=\"#\" title=\"\" target=\"\">"+
$(this).attr("Name")+ "</a></div>" +
"<div class=\"description\">" + $(this).attr("Description") +
"</div></div></div></td>";
$(cellData).appendTo(trow);
if( (index + 1) % 4 == 0) {
trow.appendTo(table);
trow = $("<tr>");
}
});
if(trow.is(':not(:empty)')) trow.appendTo(table);
}
});
});
Я также хранил $("#tbl")
в переменной, чтобы уменьшить количество поисковых запросов.
Не связан с StackOverflow