javascript - indexOf 不适用于我的 JavaScript 列表

标签 javascript arrays indexof

我正在尝试获取已放入列表中的跨度元素的索引。因此,我创建了包含所有元素的列表,但是当我尝试获取元素的索引时,通过单击其中一个元素,出现错误“indexOf 不是函数”。我该怎么做才能解决这个问题并获得预期的输出?

var mdr;
window.onload = function() {
  mdr = document.getElementsByClassName("lol");
  for (let i = 0; i < mdr.length; i++) {
    mdr[i].addEventListener("click", haha);
  };
};

function haha() {
  console.log(mdr.indexOf(this));
};
html,
body {
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0;
}

div {
  height: 50px;
  width: 100px;
  background: grey;
  display: flex;
  align-items: center;
  flex-direction: column;
  text-align: center;
}
<div class="lol">1</div>
<div class="lol">2</div>
<div class="lol">3</div>
<div class="lol">4</div>
<div class="lol">5</div>

最佳答案

The getElementsByClassName() method of Document interface returns an array-like object of all child elements which have all of the given class names.

由于 getElementsByClassName() 返回的结果不是数组,indexOf() 在结果集中不可用。

尝试使用 Spread syntax :

[...mdr].indexOf(this)

或:Array.from()

The Array.from() method creates a new, shallow-copied Array instance from an array-like or iterable object.

Array.from(mdr).indexOf(this)

var mdr;
window.onload = function() {
   mdr = document.getElementsByClassName("lol");
   for (let i = 0; i < mdr.length; i++) {
       mdr[i].addEventListener("click", haha);
   };
};

function haha() {
   console.log(Array.from(mdr).indexOf(this));
};
html, body {
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0;
}
div {
  height: 50px;
  width: 100px;
  background: grey;
  display: flex;
  align-items: center;
  flex-direction: column;
  text-align: center;
}
<div class="lol">1</div>
<div class="lol">2</div>
<div class="lol">3</div>
<div class="lol">4</div>
<div class="lol">5</div>

关于javascript - indexOf 不适用于我的 JavaScript 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56913605/

相关文章:

javascript - 数字在字符串中重复次数不超过五次的正则表达式,例如联系电话

javascript - 如何使用 Javascript 更改 chrome 浏览器选项卡的颜色?

arrays - JSON 中有数组深度限制吗?

javascript - 如何检查名称索引数组中有多少个特定结果

javascript - ['null' ,'' ,'undefined' ].indexOf(str) < 0 和 (str !== null || str !== '' || str !== undefined) 等价吗?

javascript - 在链接中引用视频时,是否可以在 iPad 上以全屏模式打开 .mp4?

javascript - 为什么 "{} == false"是不正确的 javascript 语法,而 "false == {}"不是?

c# - 奇怪的数组问题

ios - 使用字符串数组格式化字符串

java - indexOf ("\n") 返回 0