【问题标题】:Button that acts like toggle with JS functions类似于切换 JS 功能的按钮
【发布时间】:2018-03-05 13:55:20
【问题描述】:

如何使 HTML 按钮像一个切换按钮一样工作?我有两个修改图像的 JS 函数,一个是新图像,另一个是修改图像。如何确保按钮在第一次按下时激活第一个功能,然后在再次按下时激活第二个功能,重复第三次和第四次等。

    document.getElementById("baseImg").src = "assets/1stImg.png";

    function imgChange1() {
      document.getElementById("baseImg").src = "assets/2ndImg.png";
    }
    function imgBack1() {
      document.getElementById("baseImg").src = "assets/1stImg.png";
    }
<img id="baseImg">

<button onclick="imgChange1()">Change</button>

如何在此按钮中包含第二个功能?

`

【问题讨论】:

  • 纯代码编写请求在 Stack Overflow 上是题外话——我们希望这里的问题与特定编程问题有关——但我们很乐意帮助您自己编写!告诉我们what you've tried,以及您遇到的问题。这也将有助于我们更好地回答您的问题。
  • 类似问题(尽管大多数答案使用 jQuery):stackoverflow.com/questions/309081/…
  • 已添加代码。如果可能,我正在寻找 HTML/JS 解决方案。

标签: javascript html


【解决方案1】:

我真的不明白你的问题,因为你说的是​​“toggle”但你说的是

如何确保按钮在按下时激活第一个功能 第一次但再次按下时会激活第二次?

不过,你可以这样做:

var clicked = false;

function toggleBtnClick(button) {
  var img = document.getElementById('baseImg');

  if (clicked) { //this will be executed on future clicks after first click
    img.src = 'http://via.placeholder.com/350x150/4CAF50/000000';
    console.log('Next click');
    //or do something else
  } else { //this will only be executed once
    img.src = 'http://via.placeholder.com/350x150/e9e9e9/000000';
    console.log('First click');
  }
  clicked = true; //update to true after first click
}
button {
  position: absolute;
  right: 0;
}
<img id="baseImg" src="http://via.placeholder.com/350x150/3fafed/000000">
<button onclick="toggleBtnClick()">Change</button>

但是,如果您真的想要 “切换” 功能,您可以这样做:

var clicked = false;

function toggleBtnClick() {
  var img = document.getElementById('baseImg');
  if (clicked) {
    img.src = 'http://via.placeholder.com/350x150/e9e9e9/000000';
    clicked = false;
  } else {
    img.src = 'http://via.placeholder.com/350x150/3fafed/000000';
    clicked = true;
  }
}
button {
  position: absolute;
  right: 0
}
<img id="baseImg" src="http://via.placeholder.com/350x150/e9e9e9/000000">

<button onclick="toggleBtnClick()">Change</button>

【讨论】:

  • 后者正是我的意思,对不起。而且效果很好,比我的尝试效率高得多。谢谢你。 ALSO:第一次点击时它没有改变是一个缺陷,还是你认为这是由于加载大图像的延迟?
  • 图片加载一段时间后,一定是大图加载延迟造成的。否则,一定是哪里出了问题。
  • 它似乎是图像,仅在按下按钮时加载。尝试使用您使用的占位符链接按预期工作。我会考虑预加载这两个图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多