将附加内容(+ =)添加到HTML属性

时间:2016-11-07 16:42:17

标签: javascript html ecmascript-6

我有一个HTML onclick属性,我试图在keypress上动态添加其他属性而不删除现有属性。 换句话说......

说我有

<button onclick="doThis(1)">

每按一次按钮,我想添加一下按钮,这样第一次按下按钮就可以了

<button onclick="doThis(1), doThis(2)">

第三次:

<button onclick="doThis(1), doThis(2), doThis(3)">

有没有办法

document.getElementById("mybtn").onclick += doThis($n{index};

还是我必须独立构建字符串?

如果没有构建一个大字符串来添加到setAttribute,我似乎无法弄明白。当我尝试上面JS代码的变体时,我崩溃了浏览器:(

看看来看看!!

1 个答案:

答案 0 :(得分:3)

好的,我真的不喜欢这个答案,但它确实能满足您的需求。我不喜欢它,因为它依赖于将事件处理程序设置为DOM对象的属性,而不是使用W3C DOM Level 2事件模型。但是,除此之外,你在这里......

window.doThisCounter = 1;
var eventList = "";

function doThis(){
      console.log(eventList);
      window.doThisCounter++;
      eventList += "doThis(" + window.doThisCounter + ");";
      btnGo.setAttribute("onclick", eventList);
}


// This will execute once, when page is ready:
window.addEventListener("DOMContentLoaded", function(){
  
  var btn = document.getElementById("btnGo");

  (function(counter){
    eventList = "doThis(1);";
    btnGo.setAttribute("onclick", eventList);
  }(window.doThisCounter));
  
});
<button id="btnGo">Click Me!</button>