我正在尝试获取类名抓取的任何元素数组的ID。我尝试了几种不同的方法,我认为所有方法都应该有效,但每种方式都会返回“未定义”。
html示例:
<img id='1207_image-button' class='review-button' src="..." />
的javascript:
var buttons = document.getElementsByClassName("review-button");
var button;
for (button in buttons) { alert(button.id); }
我也尝试过这是for循环:
alert($(this).attr('id'));
每种方式都返回“undefined”,我不知道如何提醒实际的id。如果我把它放在循环中:
alert(button);
它将循环并输出0到5(元素的数量),然后输出id,所以我知道在数组中我只是不知道如何到达它。
答案 0 :(得分:5)
for...in
循环用于迭代对象。不是NodeList
,甚至不是数组。使用一个好的旧for
循环。
for(var i = 0; i < buttons.length; i++)
alert(buttons[i].id);
答案 1 :(得分:1)
使用for ... in
,您错误地遍历按钮集合。试试这个,而不是:
var buttons = document.getElementsByClassName("review-button");
for (var i = 0, n = buttons.length; i < n; ++i) {
var id = buttons[i].id;
...
}
或者,在jQuery中
$('.review-button').each(function() {
var id = this.id;
...
});
答案 2 :(得分:0)
考虑到你正在使用jquery使用它;
$( ".review-button" ).each(function() {
alert($( this ).attr("id"));
});
答案 3 :(得分:0)
错误的部分是循环。 你必须这样做:
for (button in buttons) { alert(buttons[button].id); }
在这种循环中,你分配数组的索引,而不是每个循环中的对象。