Bạn có thể làm điều đó như thế này bằng cách duyệt qua các mảng trong vòng một, tích lũy HTML mới vào mảng riêng của nó và sau đó gia nhập HTML tất cả cùng nhau và chèn nó vào DOM ở cuối:
var array = [...];
var newHTML = [];
for (var i = 0; i < array.length; i++) {
newHTML.push('<span>' + array[i] + '</span>');
}
$(".element").html(newHTML.join(""));
một số người thích sử dụng phương pháp .each()
jQuery thay vì for
vòng lặp mà sẽ làm việc như thế này:
var array = [...];
var newHTML = [];
$.each(array, function(index, value) {
newHTML.push('<span>' + value + '</span>');
});
$(".element").html(newHTML.join(""));
Hoặc vì đầu ra của lặp mảng chính nó là một mảng với một mục bắt nguồn từ mỗi mục trong origi mảng NAL, jQuery .map
thể được sử dụng như thế này:
var array = [...];
var newHTML = $.map(array, function(value) {
return('<span>' + value + '</span>');
});
$(".element").html(newHTML.join(""));
Bạn nên sử dụng là một sự lựa chọn cá nhân phụ thuộc vào phong cách mã hóa ưa thích của bạn, nhạy cảm với hiệu suất và sự quen thuộc với .map()
. Tôi đoán là vòng lặp for
sẽ là nhanh nhất vì nó có ít cuộc gọi chức năng hơn, nhưng nếu hiệu suất là tiêu chí chính, thì bạn sẽ phải đánh giá các tùy chọn để thực sự đo lường.
FYI, trong cả ba tùy chọn này, HTML được tích lũy thành một mảng, sau đó kết hợp với nhau ở cuối và chèn vào DOM tất cả cùng một lúc. Điều này là do các hoạt động DOM thường là phần chậm nhất của một hoạt động như thế này, vì vậy tốt nhất là giảm thiểu số lượng các hoạt động DOM riêng biệt. Các kết quả được tích lũy thành một mảng vì việc thêm các mục vào một mảng và sau đó nối chúng vào cuối thường nhanh hơn việc thêm các chuỗi khi bạn đi.
Và, nếu bạn có thể sống với IE9 trở lên (hoặc cài đặt một polyfill ES5 cho .map()
), bạn có thể sử dụng phiên bản mảng của .map
như thế này:
var array = [...];
$(".element").html(array.map(function(value) {
return('<span>' + value + '</span>');
}).join(""));
Lưu ý: phiên bản này cũng loại bỏ biến số trung gian newHTML
vì lợi ích của độ chặt.
array.join (','); – Pheonix