开发者问题收集

简单的图像切换功能不起作用(没有 jQuery)

2016-11-02
49

我一直在尝试让这个简单的图像点击切换功能工作,但我不知道哪里出了问题。我必须使用 querySelector 和 addEventListener,而且不允许使用 jquery。有人能帮我解决这个问题吗?

document.querySelector(".imageClass").addEventListener("click", function () {
    var img = this.src;
    if(img.src == "/image/location1.png") {
        img.src = "/image/location2.png";
    } else {
        img.src = "/image/location2.png";
    }
});

我收到此错误:

document.querySelector(...).addEventlistener is not a function(...)
2个回答

获取属性很可能会返回绝对 URL,因此您确实需要确保检查的是属性 (Attribute),而不是属性 (Property)。

此外,您访问了 src 两次,第一次是执行 var img = this.src ,然后是执行 img.src

并且您的条件在两种情况下都执行相同的操作

document.querySelector(".imageClass").addEventListener("click", function () {
    var img = this;
    var src = img.getAttribute('src');

    if( src == "/image/location1.png" ) {
        img.src = "/image/location2.png";
    } else {
        img.src = "/image/location1.png";
    }
});
adeneo
2016-11-02

通过传递参数来接收事件。从那里您可以访问事件的目标元素并获取其 src 属性。

document.querySelector(".imageClass").addEventListener("click", function (e) {
  var img = e.target;
  if(img.src == "/image/location1.png") {
    img.src = "/image/location2.png";
  } else {
    img.src = "/image/location2.png";
  }
});
2016-11-02