分享
三行代码  ›  专栏  ›  技术社区  ›  sam solomon

在onclick中使用变量(保留旧变量值,即使以后更改)

  •  0
  • sam solomon  · 技术社区  · 1 周前

    我有一个问题,需要使用用户提供的变量在javascript按钮中动态添加onclick事件。 :这些变量将更改,但我不希望onclick事件全部更改!!

    我写了一个小例子,它模仿了我的设置(但是显然去掉了不必要的部分,因此看起来有点傻)。

    1) clone = Object.assign({}, old);
    
    2) clone = JSON.parse(JSON.stringify(old);
    

    都没用

    这是密码笔: https://codepen.io/samuel-solomon/pen/ExPqdpM

    <div id="1"></div>
    

    CSS

    button {
      width: 50px;
      height: 50px;
    }
    
    .blue{background-color: blue;}
    .black{background-color: black;}
    

    Javascript

    btn1 = document.createElement('button');
    var one_class = "button black";
    btn1.className = one_class;
    btn1.addEventListener('click', function() {btn1.className = one_class;})
    add_first = document.getElementById('1');
    add_first.appendChild(btn1).html;
    one_class = "button blue"
    
    1 回复  |  直到 1 周前
        1
  •  0
  •   hev1    1 周前

    你可以用 Function#bind 将特定值指定为事件处理程序的第一个参数。这将起到 one_class

    btn1.addEventListener('click', function(cls, event) {
           btn1.className = cls;
    }.bind(null, one_class));