重构:通过hash(?)javascript循环

重构:通过hash(?)javascript循环,javascript,Javascript,我制作了按钮,根据一些参数优化搜索 var计数=1; document.getElementById(“系列”).addEventListener(“单击”,更改文本); 函数changeText(){ 如果(计数=0){ document.getElementById(“家族”).innerHTML=“”; document.getElementById(“families”).insertAdjacentHTML(“afterbegin”,“Zeige Angefragt”); 计数=1

我制作了按钮,根据一些参数优化搜索

var计数=1;
document.getElementById(“系列”).addEventListener(“单击”,更改文本);
函数changeText(){
如果(计数=0){
document.getElementById(“家族”).innerHTML=“”;
document.getElementById(“families”).insertAdjacentHTML(“afterbegin”,“Zeige Angefragt”);
计数=1
}否则{
document.getElementById(“家族”).innerHTML=“”;
document.getElementById(“families”).insertAdjacentHTML(“afterbegin”,“Hide Angefragt”);
计数=0
}
};
document.getElementById(“families2”).addEventListener(“单击”,changeText2);
函数changeText2(){
如果(计数=0){
document.getElementById(“families2”).innerHTML=“”;
document.getElementById(“families2”).insertAdjacentHTML(“afterbegin”,“Zeige Eingetielt”);
计数=1
}否则{
document.getElementById(“families2”).innerHTML=“”;
document.getElementById(“families2”).insertAdjacentHTML(“afterbegin”,“Hide-Eingeteilt”);
计数=0
}
};
document.getElementById(“families3”).addEventListener(“单击”,changeText3);
函数changeText3(){
如果(计数=0){
document.getElementById(“families3”).innerHTML=“”;
document.getElementById(“families3”).insertAdjacentHTML(“afterbegin”,“Zeige Abgesagt”);
计数=1
}否则{
document.getElementById(“families3”).innerHTML=“”;
document.getElementById(“families3”).insertAdjacentHTML(“afterbegin”,“Hide Abgesagt”);
计数=0
}

}
这应该可以做到

function changeTextClickHandler(elementId, showText, hideText) {
  return function() {
    if (count == 0) {
        document.getElementById(elementId).innerHTML = "";
        document.getElementById(elementId).insertAdjacentHTML('afterbegin', showText);
        count = 1
    } else {
        document.getElementById(elementId).innerHTML = "";
        document.getElementById(elementId).insertAdjacentHTML('afterbegin', hideText);
        count = 0
    }
  }
}
document.getElementById("families").addEventListener("click", changeTextClickHandler("families", "Zeige Angefragt", "Hide Angefragt"));
document.getElementById("families2").addEventListener("click", changeTextClickHandler("families2", "Zeige Eingeteilt", "Hide Eingeteilt"));
document.getElementById("families3").addEventListener("click", changeTextClickHandler("families3", "Zeige Abgesagt", "Hide Abgesagt"));

querySelectorAll
属性选择器一起使用

Array.from( document.querySelectorAll( "[id^='families']") ).forEach( s => {
   s.addEventListener( "click", e => {
      var el = e.currentTarget;
      if (count == 0) {
         el.innerHTML = "";
         el.insertAdjacentHTML('afterbegin', "Zeige Eingeteilt");
      } else {
         el.innerHTML = "";
         el.insertAdjacentHTML('afterbegin', "Hide Eingeteilt");
      }      
      count = (count + 1) % 2;
   })
})

请注意,每个changeTextX()函数中使用了不同的字符串谢谢,但是对于每个id,我都有自己的文本显示在按钮上。根据每个id创建该文本的映射,然后使用相同的文本。