无法同时运行两个javascript函数

时间:2019-01-09 20:54:45

标签: javascript html css

我正在尝试建立我的第一个网站,我希望获得的功能是 有一个下拉框,其中每个选项都会更改哈希值。当哈希改变时 我具有基于哪个哈希的特定表和图像显示。到目前为止,我可以得到 它可以工作,但只有我的第一选择。每当我尝试添加一个以上 其中的一个正在运行。

到目前为止,我已经尝试过将所有代码合并到一个函数中,但这似乎非常乏味,并且需要我编写大量的

elem = document.getElementById(“ xxxxx”);    elem.style.display =“ block”;

我的每个选择

function locationmario() {
      if (window.location.hash === '#Mario') {
      elem = document.getElementById("damagetablemario");
      elem.style.display = "block";
      elem = document.getElementById("marioimage");
      elem.style.display = "block";   
              }  else {
                 elem.style.display = "none";
                 elem = document.getElementById("damagetablemario");
                 elem.style.display = "none";

   }
}

function locationdk() {
   if (window.location.hash === "#Donkey-Kong") {
   elem = document.getElementById("damagetabledk");
   elem.style.display = "block";
   elem = document.getElementById("dkimage");
   elem.style.display = "block";   
                     } else {
                     elem = document.getElementById("dkimage");
                     elem.style.display = "none";
                     elem = document.getElementById("damagetabledk");
                     elem.style.display = "none";
                        }
  }

window.onhashchange = locationmario;
window.onhashchange = locationdk;

我希望能够看到我切换到的每个哈希的对应表和图像。

2 个答案:

答案 0 :(得分:0)

window.onhashchange只能指向一个函数,因此在上述情况下,它将仅指向locationdk。建议您重构代码,以便有两个if语句检查window.location

答案 1 :(得分:0)

我真的想更改您的更多代码,但以下内容应该可以工作。

首先,clear_ids简单地循环遍历ID,并默认隐藏那些div。之后,这只是一个简单的IF else语句。

function locationchange() {

var clear_ids = ["marioimage","damagetablemario","damagetabledk","dkimage"];
for(z=0;z<=clear_ids.length-1;z++){
  elem = document.getElementById(clear_ids[z]);
  elem.style.display = "none";
}

if (window.location.hash === "#Donkey-Kong") {
    elem = document.getElementById("damagetabledk");
    elem.style.display = "block";
    elem = document.getElementById("dkimage");
    elem.style.display = "block";   
}
else  if (window.location.hash === '#Mario') {
      elem = document.getElementById("damagetablemario");
      elem.style.display = "block";
      elem = document.getElementById("marioimage");
      elem.style.display = "block";  
 }

}

window.onhashchange = locationchange;