我有一个问题,为什么我不想累了一段时间。我刚开始学习js。非常感谢您的帮助
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<img class="test" src="https://storage.googleapis.com/gweb-uniblog-publish-prod/static/blog/images/google-200x200.7714256da16f.png">
<img class="test" src="https://storage.googleapis.com/gweb-uniblog-publish-prod/static/blog/images/google-200x200.7714256da16f.png">
<script>
var test = document.getElementsByClassName("test");
test.onclick = function () {
alert("test");
};
</script>
</body>
</html>
答案 0 :(得分:1)
您需要将eventlistener添加到每个元素。所以你需要遍历元素,因为myImage.image = filter1(myImage: myImage.image)
返回一个元素数组。你可以这样做:
document.getElementsByClassName()
&#13;
function trigger() {
alert("test");
}
var test = document.getElementsByClassName("test");
for (var i = 0, j = test.length; i < j; i++) {
test[i].addEventListener("click", trigger);
}
&#13;
答案 1 :(得分:0)
我不是javascript开发人员,但我认为应该是
var test = document.getElementsByClassName("test")[0];
test.onclick = function (){
alert("test");
};
,document.getElementsByClassName
返回一个列表。
答案 2 :(得分:0)
document.getElementsByClassName("test");
返回一个数组。 您必须遍历该数组并将onclick应用于每个元素。
答案 3 :(得分:0)
如前面的答案所述,方法document.getElementsByClassName
返回一个NodeList对象,它是一个数组索引(0,1 ...)的对象,你可以使用for .. in
循环遍历它或Array.prototype.forEach.call
方法,可以将事件监听器附加到每个节点。
var tests = document.getElementsByClassName("test");
var node;
for (node in tests) {
node.addEventListener("click", function(e){
// do something
});
}
或者通过以下方式:
var tests = document.getElementsByClassName("test");
Array.prototype.forEach.call(tests, function(node){
node.addEventListener("click", function(e){
// do something
});
});
要点是你必须为每个元素添加事件监听器。