Я пытаюсь создать свой первый веб-сайт, я хочу получить есть раскрывающийся список, в котором каждая опция меняет хэш. Когда хеш меняется У меня есть определенная таблица и отображение изображения на основе хеша. Пока я могу получить он должен работать, но только с моим первым вариантом. Всякий раз, когда я пытаюсь добавить больше, только один из них функционирует.
До сих пор я пытался объединить весь свой код в одну функцию, но это кажется очень утомительным и потребовало бы написания огромного количества
elem = document.getElementById («ххххх»); elem.style.display = "блок";
для каждого из моих вариантов
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;
Я хочу видеть свою соответствующую таблицу и изображение для каждого хэша, на который я переключаюсь.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


window.onhashchange может указывать только на одну функцию, поэтому в приведенном выше случае он будет указывать только на locationdk. Я предлагаю вам выполнить рефакторинг кода, чтобы у вас было два оператора if, проверяющих window.location.
Я действительно хочу изменить ваш код, но приведенный ниже должен работать.
Сначала clear_ids просто перебирает идентификаторы и скрывает эти 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;Когда я пытаюсь использовать это, у меня ничего не отображается на моей странице, независимо от того, какой у меня хеш.
Похоже, произошла опечатка. Я обновил код.
используйте
.addEventListener, вы переназначаете функцию. вы также можете объединить функции.