JavaScript事件无法与getElementById一起使用

JavaScript事件无法与getElementById一起使用,javascript,image,function,events,Javascript,Image,Function,Events,我对JS事件有问题。我在我的网站上放了一张图片,在JS的帮助下,当人们点击图片时,src属性将被设置为查找另一张图片。但是什么也没发生 代码 只需使用,并放弃HTMLonclick属性: var img = document.getElementById('img'); img.onclick = function(){ img.src = "Login_img2.jpg"; }; 只需使用,并放弃HTMLonclick属性: var img = document.getElement

我对JS事件有问题。我在我的网站上放了一张图片,在JS的帮助下,当人们点击图片时,
src
属性将被设置为查找另一张图片。但是什么也没发生

代码 只需使用,并放弃HTML
onclick
属性:

var img = document.getElementById('img');
img.onclick = function(){
    img.src = "Login_img2.jpg";
};
只需使用,并放弃HTML
onclick
属性:

var img = document.getElementById('img');
img.onclick = function(){
    img.src = "Login_img2.jpg";
};

不要为函数命名
img()
。当您使用不等同于全局对象的东西时,它可以正常工作。

不要命名您的函数
img()
。当您使用不等同于全局对象的对象时,它可以正常工作。

这可以通过使用
This
关键字删除对元素的不必要搜索来完成


这可以通过使用
This
关键字删除对元素的不必要搜索来实现


这可能是因为您同时命名了函数
img
和元素的id
img

浏览器将实际使用ID作为全局变量。因此,只需创建一个id为
img
的元素,就基本上创建了
window.img

最好将函数重命名为类似于
swapImg
的名称,并使用
this
和JavaScript
onclick
方法,而不是将
onclick
放在标记中,并将代码包装在IIFE中,以避免变量泄漏到全局
窗口
对象中

(function() {
    document.getElementById('img').onclick = swapImage;

    function swapImage() {
        this.src = 'Login_img2.jpg';
    };
})();

这可能是因为您同时命名了函数
img
和元素的id
img

浏览器将实际使用ID作为全局变量。因此,只需创建一个id为
img
的元素,就基本上创建了
window.img

最好将函数重命名为类似于
swapImg
的名称,并使用
this
和JavaScript
onclick
方法,而不是将
onclick
放在标记中,并将代码包装在IIFE中,以避免变量泄漏到全局
窗口
对象中

(function() {
    document.getElementById('img').onclick = swapImage;

    function swapImage() {
        this.src = 'Login_img2.jpg';
    };
})();

你的问题已经有了答案。我想指出的是,您也可以使用事件侦听器来完成

var oImg = document.getElementById('myImg');
oImg.addEventListener('click', function() {
    this.setAttribute('src', 'Login_img2.jpg');
}, false);

你的问题已经有了答案。我想指出的是,您也可以使用事件侦听器来完成

var oImg = document.getElementById('myImg');
oImg.addEventListener('click', function() {
    this.setAttribute('src', 'Login_img2.jpg');
}, false);

打开调试控制台并告诉我们您看到的错误。请不要将新问题编辑为现有问题。打开调试控制台并告诉我们您看到的错误。请不要将新问题编辑为现有问题。
img
不是“保留字”。它是元素的ID。一些浏览器将ID转换为全局变量。您的第一个问题得到了回答。这是一个不同的问题,应该作为一个新问题发布。
img
不是一个“保留字”。它是元素的ID。一些浏览器将ID转换为全局变量。您的第一个问题得到了回答。这是一个不同的问题,应该作为一个新问题发布。对不起,我没有得到你在那里写的任何东西。我是一个初学者,你能回答更新的问题吗?非常感谢。对不起,我不明白你在那里写的东西。我是一个初学者,你能回答更新的问题吗?非常感谢。
var oImg = document.getElementById('myImg');
oImg.addEventListener('click', function() {
    this.setAttribute('src', 'Login_img2.jpg');
}, false);