【问题标题】:Execute different function when clicking on button单击按钮时执行不同的功能
【发布时间】:2017-02-08 17:50:00
【问题描述】:

我正在使用 Javascript 制作网页,我想实现一个按钮,以便每当您单击它时,按钮内的文本都会更改为下一个文本。

目前我正在这样做(也是一个演示来说明我的意思):

CodePen.io

var textCount = 0;
function changeText() {
  var myText = document.getElementById("demo");
  switch (textCount) {
    case 0:{
      myText.innerHTML = "This is the second text";
      textCount++;
    }
    break;
    case 1: {
      myText.innerHTML = "This is the third text";
      textCount++;
    }
    break;
    case 2: {
      myText.innerHTML = "It keeps going on like this";
      textCount++;
    }
    break;
  }
}

基本上我是用switch语句和一个计数器一步一步来的。

我能想到的另一种方法是使用一个 array 来保存所有文本,我的函数只是通过它(似乎更有效)


  • 但我仍然想知道是否有任何其他方法(尽管很明显)可以使用纯 Javascript 实现这一目标。

提前致谢。

【问题讨论】:

  • 如果你的代码有效,这个问题更适合code review stack exchange
  • 谢谢,但我想我得到了我正在寻找的答案:)

标签: javascript html switch-statement


【解决方案1】:

你是对的,你可以通过使用数组来使其更简洁高效,例如:

let list = ['Message one', 'Message two', 'Message three', 'Message four'];

let counter = 0;

function clickHandler () {
    element.textContent = list[counter];
    counter = (counter + 1) % list.length; // If you want to loop messages, otherwise ++
}

【讨论】:

  • 谢谢你的回答:)
  • @DanielD。别客气!如果它解决了您的问题,请不要忘记接受它。谢谢!
  • 是的,我将其标记为接受,只是一个侧面问题。 % list.length 到底是做什么的,它将如何循环我的列表?
  • % 是模数。它将给出除法的其余部分。例如,如果 list.length=4count 为 2,(count + 1) % 4 = 3,因为 3/4 的余数是 3,但如果再加一个,(count + 1) % 4 = 0,因为 4/4 的余数是 0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多