javascript - 我可以使用 indexOf(input) 吗?

标签 javascript

function myFunction(input){
var number_of_images = input.parentNode.getElementsByTagName("img")
var image_clicked = number_of_images.indexOf(input)
alert ("you clicked on image number "+image_clicked)
}

我正在构建一个包含三张图片的评分量表。我想告诉用户他点击了三张图片中的哪一张。我在所有三个图像上都有 onClick 事件 onClick(this)。然后,我尝试使用 indexOf(input),其中 input 是指从 onclick(this) 传递的参数 (this)。它不工作。 ¿任何替代建议?谢谢。

最佳答案

对其调用 indexOf 将不起作用,因为结果是(实时)NodeList ,并且不提供 Array 方法。然而,您仍然可以申请 Array indexOf method在节点列表上(通过使用 .call Function met ),因为它是通用的:

var images = input.parentNode.getElementsByTagName("img");
var index = Array.prototype.indexOf.call(images, input);

请注意,较旧的 IE 不支持 indexOf,您需要 shim it .

关于javascript - 我可以使用 indexOf(input) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13961862/

相关文章:

javascript - 当 "new"实例时错过原型(prototype)函数

JavaScript 错误的整数除法结果

JavaScript 确认在 Chrome 中不工作

javascript - 当其他文本框被填充时填充文本框

javascript - typescript 类型的动态类方法

javascript - JqG​​rid:显示列内 HTML 元素的文本

javascript - Node 8.0 新符号并在 Number.prototype.toLocaleString() 的符号后添加空格

javascript - 在 Drupal 8 中附加或包含一个 js 文件

javascript - 可重用性 : how to use same list items at different places in a web page

JavaScript 正则表达式将字符串拆分为单词