将getElementsByTagName与nav标签一起使用

时间:2019-02-05 19:46:05

标签: javascript html css css3 for-loop

我正在尝试使用此代码同时折叠所有导航栏,但似乎没有做任何事情:

var toggleOffAll = function() {
	var x = document.getElementsByTagName('nav');
	var j;
	for (j = 0; j < j.length; j++){
		
	x[j].style.display='none';
	};
  };

2 个答案:

答案 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");