Javascript object.id返回" undefined"在元素数组中

时间:2015-01-27 15:38:13

标签: javascript arrays

我正在尝试获取类名抓取的任何元素数组的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,所以我知道在数组中我只是不知道如何到达它。

4 个答案:

答案 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); }

在这种循环中,你分配数组的索引,而不是每个循环中的对象。