我正在尝试建立我的第一个网站,我希望获得的功能是 有一个下拉框,其中每个选项都会更改哈希值。当哈希改变时 我具有基于哪个哈希的特定表和图像显示。到目前为止,我可以得到 它可以工作,但只有我的第一选择。每当我尝试添加一个以上 其中的一个正在运行。
到目前为止,我已经尝试过将所有代码合并到一个函数中,但这似乎非常乏味,并且需要我编写大量的
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;
我希望能够看到我切换到的每个哈希的对应表和图像。
答案 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;