В setGeo
вы неправильно набрали .getElementById()
.
Но помимо этого у вас есть тонна кода, который не нужен, и решение, которое хрупко и не будетмасштабируется по мере изменения ваших потребностей.
Вам действительно нужна только одна функция, которая принимает два аргумента - какой элемент показать / скрыть / переключить и какую операцию выполнить с ним (показать / скрыть / переключить).
Кроме того, практика установки обработчиков событий с помощью атрибутов событий HTML - это более чем 25-летний метод, который восходит к тому времени, когда появились веб-стандарты, и есть много причин не делать этогоиспользуйте эту древнюю технику сегодня.Полностью отделите ваш JavaScript от вашего HTML и используйте современные стандарты для конфигурации событий.
// Get your DOM references
var f = document.querySelector(".function");
var c = document.querySelector(".country");
var r = document.querySelector(".region");
var l = document.querySelector(".locale");
// Set up your event handlers in JavaScript, not HTML
f.addEventListener("click", function(){
// Just call the single function as many times as needed
// with the appropriate arguments each time:
showHideToggle(c,"show");
showHideToggle(r,"hide");
showHideToggle(l,"toggle");
});
// One function to do all operations
function showHideToggle(element, operation){
// For show/hide/toggle operations just do the right
// thing with the "hidden" class.
switch (operation.toLowerCase()) {
case "show":
element.classList.remove("hidden");
break;
case "hide":
element.classList.add("hidden");
break;
default:
element.classList.toggle("hidden");
break;
}
}
div { opacity:1; transition:all 1s; }
.function { cursor:pointer; user-select:none; margin:1em; }
.hidden { opacity:0; }
<div class="function">Click Me</div>
<div class="country hidden">Country</div>
<div class="region">Region</div>
<div class="locale hidden">Locale</div>