下面的Javascript / jQuery代码将输出三个div,数字为1,2和3.但是当点击任何div时,它将始终提醒数字3。
我如何编写它以便提醒"正确"数。 不将数字放入HTML本身。
var values = [1, 2, 3];
for (var i in values) {
var element = $("<div>" + values[i] + "</div>");
$("body").append(element);
element.click(function() { alert(values[i]); });
}
答案 0 :(得分:1)
这应解决它:
var values = [1, 2, 3];
function clickHandler(event) {
alert(event.target.innerHTML);
}
for (var i in values) {
var element = $("<div>" + values[i] + "</div>");
$("body").append(element);
element.click(clickHandler);
}
答案 1 :(得分:1)
因此,为避免闭包问题,您可以将绑定包装在IIFE中:
var values = [1, 2, 3];
for (var i in values) {
var element = $("<div>" + values[i] + "</div>");
$("body").append(element);
(function(i) { // 'i' is local to anonymous function block
element.click(function() {
alert(values[i]);
});
}(i));
}
答案 2 :(得分:0)
试试这个:
var values = [1, 2, 3];
for (var i in values) {
var element = $("<div>" + values[i] + "</div>");
$("body").append(element);
}
$("div").click(function() {
alert($(this).text());
});
希望它会有用
答案 3 :(得分:0)
select SellerName, count(ProductID) from Seller
join Smartphone using (SellerID)
group by SellerName
order by count(ProductID);
最简单的解决方案:阅读.innerHTML