使用的getElementsByTagName与NAV标签[关闭]

问题描述 投票:-2回答:2

我试图同时折叠所有导航栏使用此代码,但它似乎并没有被做任何事情:

var toggleOffAll = function() {
	var x = document.getElementsByTagName('nav');
	var j;
	for (j = 0; j < j.length; j++){
		
	x[j].style.display='none';
	};
  };
javascript html css css3 for-loop
2个回答
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 +,您还可以通过使用箭头功能,而不是像这样缩短了上面的代码一行:

document.querySelectorAll('nav').forEach(e=>e.style.display='none');

注:如果您计划去与ES6 +方法,您将需要使用JavaScript编译器一样Babel您ES6 +代码转换为JavaScript代码对生产向后兼容的版本,所以它会支持当前和旧的浏览器或环境。


-3
投票

jQuery的就好办多了:

$('nav').css("display", "none");
© www.soinside.com 2019 - 2024. All rights reserved.