4
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(this) 上都有 onClick 事件。然后,我尝试使用 indexOf(input),其中 input 是指从 onclick(this) 传递的参数 (this)。它不工作。¿ 任何替代建议?谢谢。

4

1 回答 1

3

调用indexOf它不起作用,因为结果是 (live) NodeList,并且不提供 Array 方法。但是,您仍然可以在节点列表上应用ArrayindexOf方法(通过使用.callFunction met),因为它是通用的:

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

请注意,较旧的 IE 不支持 indexOf,您需要对其进行填充

于 2012-12-19T22:00:36.033 回答