#javascript #функции #hide
Как правильно сделать из этих 4-х функций одну? А также необходимо заставить их работать при нажатии кнопки(теги button и input) в html с помощью атрибута "onclick=function()". Не могу понять как их правильно связать. function showHideVysotskiy() { var hideShow = document.getElementById('vysotskiy'); if (hideShow.style.display === "none"){ hideShow.style.display = "inline"; }else{ hideShow.style.display = "none"; } }; function showHideDdt() { var hideShow = document.getElementById('ddt'); if (hideShow.style.display === "none"){ hideShow.style.display = "inline"; }else{ hideShow.style.display = "none"; } }; function showHideKeno() { var hideShow = document.getElementById('keno'); if (hideShow.style.display === "none"){ hideShow.style.display = "inline"; }else{ hideShow.style.display = "none"; } }; function showHideCinemaSongs() { var hideShow = document.getElementById('cinemaSongs'); if (hideShow.style.display === "none"){ hideShow.style.display = "inline"; }else{ hideShow.style.display = "none"; } }; Я пробовал самостоятельно как-то так, но не понимаю как обозначить номер переменной i при исполнении "onclick="function()"" : var x = { vysotskiy: document.getElementById('vysotskiy'), ddt: document.getElementById('ddt'), keno: document.getElementById('keno'), cinemaSongs: document.getElementById('cinemaSongs') }; var i = x.length; function showHide() { if (x[i].style.display === "none"){ x[i].style.display = "inline"; }else{ x[i].style.display = "none"; } };
Ответы
Ответ 1
Так как функции отличаются только элементом, id его можно передать через параметр function showHide(hideShowId) { var hideShow = document.getElementById(hideShowId) if (hideShow.style.display === "none"){ hideShow.style.display = "inline"; }else{ hideShow.style.display = "none"; } }; и вызывать потом onclick='showHide("ddt")'Ответ 2
function showHide() { ['vysotskiy', 'ddt', 'keno', 'cinemaSongs'].forEach(function(id){ var element = document.getElementById(id); if (element.style.display === "none"){ element.style.display = "inline"; }else{ element.style.display = "none"; } }); };Ответ 3
Если я правильно понял задачу, то это можно сделать, например, так: function showHide(id) { var elem = document.getElementById(id); if (elem != null) elem.style.display = (elem.style.display === "none") ? "inline" : "none"; } var ids = ['vysotskiy', 'ddt', 'keno', 'cinemaSongs']; for (var i = 0; i < ids.length; ++i) showHide(ids[i]); Если можно использовать ECMAScript 5, то цикл можно заменить методом forEach: ids.forEach(showHide)
Комментариев нет:
Отправить комментарий