javascript - 如何重置功能?

标签 javascript

var count = 0;
var change = function(btn) {
  count++
  var color = "";
  switch(count) {
    case 1: 
      color = "#ef2715";
      break;
    case 2: 
      color = "#ef8c14";
      break;
    case 3:
      color = "#efd514";
      break;
    case 4:
      color = "#3fef14";
      break;
    case 5:
      color = "#145def";
      break;
    case 6:
      color = "#093b9e";
      break;
    case 7: 
      color = "#6414ef";
      break;
    default:
      color = "#6414ef";
      break;
  }
  btn.style.background = color;
}
button { border: 1px solid black; width: 50px; height: 50px; float: left; }
<button id="one" onclick="change(this)"></button>
<button id="one" onclick="change(this)"></button>
<button id="one" onclick="change(this)"></button>
<button id="one" onclick="change(this)"></button>
<button id="one" onclick="change(this)"></button>
<button id="one" onclick="change(this)"></button>
<button id="one" onclick="change(this)"></button>
<button id="one" onclick="change(this)"></button>

我想制作某种 Canvas 。如果单击按钮一次,颜色将为红色,如果单击两次,颜色将为橙色。当您单击另一个按钮时,必须重置此功能(“计数”应重置)。

但是,即使我单击另一个按钮,功能计数也会保持不变。 我怎么解决这个问题?

(如果我想要我的 Canvas 为2500px,我是否有必要制作50个按钮?或者有没有更简单/更短的方法来制作按钮?)

谢谢

最佳答案

尝试这种方法。它为您的所有按钮提供单独的计数器。

var change = function(btn) {
  if(!btn.hasOwnProperty('myCount')) {
    btn.myCount = 0;
  }
  btn.myCount++;
  var color = "";
  switch(btn.myCount) {
    case 1: 
      color = "#ef2715";
      break;
    // ...
  }
  btn.style.background = color;
}

每个计数器都存储在按钮对象上。

UPD较短的版本是

var change = function(btn) {
  btn.myCount = !btn.myCount ? 1 : btn.myCount + 1;
  var color = "";
  // ...
}

关于javascript - 如何重置功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47172705/

相关文章:

javascript - 为什么 Canvas 上什么也没有出现?

javascript - 从容器访问组件 `this`

javascript - 按属性名称选择每个 td,然后给出 'undefined' 作为属性值

javascript - 替换javascript中最后出现的单词

javascript - Webpack 模式和加载器问题

javascript - jQuery 插件,带或不带选择器

javascript - 带有 Bootstrap 模式的 Angular js - 重新单击事件无法正确触发

javascript - 有没有办法在 <video> 源调用中包含自定义 http header ?

javascript - Node.js 中是否可以嵌套 Redis 语句?

javascript - jQuery 循环一个 "add class"方法,延迟时间为