附加onclick到img元素不起作用

时间:2014-09-27 08:37:36

标签: javascript

function prepareEventHandlers() {    
    var myImga = document.getElementsByTagName('img');

    myImga.onclick = function () {
        alert("This is Eminem Known As RAP God. The Best Rapper ever");
    }
}

window.onload = function () {
    prepareEventHandlers();
}

为什么这个函数没有在JavaScript中运行。

4 个答案:

答案 0 :(得分:2)

myImga.onclick修改为myImga[0].onclick。它适用于第一个元素..

答案 1 :(得分:1)

你想要做的事情没有多大意义,但是通过使用jquery你可以很容易地实现。

问题在于您正在获取元素数组,本机javascript不支持在元素数组上设置单击事件。此外,如果页面上没有img,您的代码将失败并在代码中进一步破坏其他javascript代码。另一方面,如果您使用jquery和点击事件,它将为您检查,并在加载javascript后加载图像时使点击可访问。

希望这有帮助

首先包括jquery:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

然后您只需将其添加到您的页面

即可
<script>    
     $('img').on(document, 'click', 
        function() {
           alert("This is Eminem Known As RAP God. The Best Rapper ever");
        }
     );
</script>

答案 2 :(得分:1)

你需要一个for循环来遍历返回的对象:

function myAlert(){
        alert("You clicked the picture. Good for you.");
}

function prepareEventHandlers() {    
    var myImga = document.getElementsByTagName('img');

    for(var i=0,l=myImga.length; i<l; ++i) myImga[i].onclick = myAlert;
}

window.onload = function () {
    prepareEventHandlers();
}

在浏览器中测试它是可能的,也许是值得的。使用control-shift-J以chrome形式显示开发人员工具 - 你甚至可以从Stackoverflow尝试这个 - 然后输入:

myImga = document.getElementsByTagName('img')

你将立即看到myImga是一个数组。

如果使用匿名函数设置警报,则for line也适用于浏览器开发人员工具。快乐的警报。

答案 3 :(得分:0)

你可以使用:

<script>
function prepareEventHandlers() {    
    var myImga = document.getElementsByTagName('img');
for(x in myImga){
    myImga[x].onclick = function () {
        alert("This is Eminem Known As RAP God. The Best Rapper ever");
    }
}
}

window.onload = function () {
    prepareEventHandlers();
}
</script>