Невозможно установить свойство 'display' из undefined
Я пишу script, чтобы скрыть/показать меню, но я получаю некоторые проблемы.
function displayMenu() {
//var classMenu = event.target.className;
//classMenu += 'Menu';
//document.getElementsByClassName(classMenu).style.display = 'block';
document.getElementsByClassName('btn-pageMenu').style.display = 'block';
}
В комментарии, что я хочу сделать, наконец, но даже если я попробую с static var, он не работает.
В CSS:
fieldset.toolsbox ul.btn-pageMenu {display:none;}
Я тоже пробую:
.btn-pageMenu {display:none;}
Больше нет успеха. У кого-нибудь есть предложение? Я изучаю JS, и я не нахожу ошибок, когда сравниваю с другими подобными сценариями.
Спасибо за вашу помощь:)
Ответы
Ответ 1
document.getElementsByClassName('btn-pageMenu')
предоставляет nodeList. Вы должны использовать: document.getElementsByClassName('btn-pageMenu')[0].style.display
(если это первый элемент из этого списка, который вы хотите изменить.
Если вы хотите изменить style.display
для всех узлов, проходящих через список:
var elems = document.getElementsByClassName('btn-pageMenu');
for (var i=0;i<elems.length;i+=1){
elems[i].style.display = 'block';
}
чтобы быть полным: если вы используете jquery, это просто:
$('.btn-pageMenu').css('display','block');
Ответ 2
Я нашел этот ответ на сайте https://plainjs.com/javascript/styles/set-and-get-css-styles-of-elements-53/.
В этом коде мы добавляем несколько стилей в элемент:
let
element = document.querySelector('span')
, cssStyle = (el, styles) => {
for (var property in styles) {
el.style[property] = styles[property];
}
}
;
cssStyle(element, { background:'tomato', color: 'white', padding: '0.5rem 1rem'});
span{
font-family: sans-serif;
color: #323232;
background: #fff;
}
<span>
lorem ipsum
</span>