我正在尝试使用此代码同时折叠所有导航栏,但似乎没有做任何事情:
var toggleOffAll = function() {
var x = document.getElementsByTagName('nav');
var j;
for (j = 0; j < j.length; j++){
x[j].style.display='none';
};
};
答案 0 :(得分:3)
您当前的for loop
循环了0
次,而不是循环了"n"
次,其中n
是您拥有的导航元素的数量。
更改此:
j < j.length;
对此:
j < x.length;
如果您不关心IE11的兼容性,则可以使用 forEach() 方法,如下所示:
document.querySelectorAll('nav').forEach(function(e){
e.style.display='none';
})
或者,如果您愿意使用 JavaScript ES6 + ,则可以使用 arrow函数将上述代码进一步缩短为一行,而不是这样:
document.querySelectorAll('nav').forEach(e=>e.style.display='none');
NB 如果您打算使用ES6 +方法,则需要使用Babel之类的JavaScript编译器将ES6 +代码转换为正式版JavaScript的向后兼容版本因此它将支持当前和较旧的浏览器或环境。
答案 1 :(得分:-3)
jQuery会容易得多:
$('nav').css("display", "none");