【问题标题】:Change looping image source with OnClick method使用 OnClick 方法更改循环图像源
【发布时间】:2020-01-05 15:07:56
【问题描述】:

当点击图片时,如何将图片的src 换成另一张图片?我尝试使用以下代码:

function changeImage() {
  var i;
  for (i = 0; i < 2; i++) {
    var image = document.getElementById('myImage[]');
  }
  if (image.src.match("bulbon")) {
    image.src = "pic_bulboff.gif";
  } else {
    image.src = "pic_bulbon.gif";
  }
}

还有这个 HTML:

<?php
for($i=0;$i<2;$i++) { ?>
<img id="myImage[]" onclick="changeImage()" src="pic_bulboff.gif" width="100" height="180">
<?php } ?>

我希望如果 myImage[] 点击,源更改为 pic_bulbon.gif, 如果我再次单击源更改为 pic_bulboff.gif.

我该怎么做?

【问题讨论】:

标签: javascript php html


【解决方案1】:

this 传递给changeImage 以获取点击的img,然后检查其src,并使用条件运算符将bulboffbulbon 分配给其src

<img id="myImage[1]" onclick="changeImage(this)" src="pic_bulboff.gif" width="100" height="180">
<img id="myImage[2]" onclick="changeImage(this)" src="pic_bulboff.gif" width="100" height="180">
const changeImage = (img) => {
  img.src = img.src === "pic_bulbon.gif" ? "pic_bulboff.gif" : "pic_bulbon.gif";
};

但最好完全避免内联处理程序 - 改为使用 Javascript 正确附加事件侦听器:

<img src="pic_bulboff.gif" width="100" height="180">
<img src="pic_bulboff.gif" width="100" height="180">
document.querySelectorAll('img').forEach((img) => {
  img.addEventListener('click', () => {
    img.src = img.src === "pic_bulbon.gif" ? "pic_bulboff.gif" : "pic_bulbon.gif";
  });
});

现场演示:

document.querySelectorAll('img').forEach((img) => {
  img.addEventListener('click', () => {
    img.src = img.src === "https://via.placeholder.com/100x100?text=foo" ? "https://via.placeholder.com/100x100?text=bar" : "https://via.placeholder.com/100x100?text=foo";
  });
});
<img src="https://via.placeholder.com/100x100?text=foo" width="100" height="180">
<img src="https://via.placeholder.com/100x100?text=foo" width="100" height="180">

【讨论】:

  • 它是否适用于图像循环?,对不起,我改变了我的问题
  • 按“运行代码 sn-p” - 你可以看到它为你自己工作。
  • 可以,但是当源更改为 pic_bulbon.gif 时,它不能再次更改为默认值(pic_bulboff.gif),你能解释一下吗?
  • 当然可以 - 如果您再次单击图像,它将切换。在答案中按“运行代码 sn-p”查看。如果单击一次,图像就会改变。如果再次单击它,图像会变回。
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2011-09-18
  • 2018-02-05
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多