Javascript object.id 元素数组中返回“undefined”

Javascript object.id returning "undefined" in array of elements

本文关键字:返回 undefined 数组 object id 元素 Javascript      更新时间:2023-09-26

我正在尝试获取由类名抓取的任何元素数组的 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'));

每种方式都返回"未定义",我不确定如何提醒实际 id。如果我把它放在循环中:

alert(button);

它将循环并输出 0 到 5(元素数量),然后输出 ids,所以我知道然后在数组中,我只是不知道如何到达它。

for...in循环用于迭代对象。不是NodeList,它甚至不是一个数组。使用一个好的旧for循环。

for(var i = 0; i < buttons.length; i++)
   alert(buttons[i].id);

通过使用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;
    ...
});

考虑到你正在使用jquery,请使用这个;

$( ".review-button" ).each(function() {
  alert($( this ).attr("id"));
});

错误的部分是循环。你必须做:

for (button in buttons) { alert(buttons[button].id); }

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