在纯Javascript中按类隐藏元素

Har*_*rry 51 html javascript

我尝试了以下代码,但它不起作用.知道我哪里出错了?

document.getElementsByClassName('appBanner').style.visibility='hidden';
Run Code Online (Sandbox Code Playgroud)
<div class="appBanner">appbanner</div>
Run Code Online (Sandbox Code Playgroud)

使用jQuery或更改HTML是不可能的,因为我[self->webView stringByEvaluatingJavaScriptFromString:@""];在Objective-C中使用.

c.P*_*.u1 95

document.getElementsByClassName返回HTMLCollection与类名匹配的所有元素的(类似数组的对象).该style属性的定义Element不适用于HTMLCollection.您应该使用括号(下标)表示法访问第一个元素.

document.getElementsByClassName('appBanner')[0].style.visibility = 'hidden';
Run Code Online (Sandbox Code Playgroud)

更新了jsFiddle

要使用Selectors API更改与该类匹配的所有元素的样式规则:

[].forEach.call(document.querySelectorAll('.appBanner'), function (el) {
  el.style.visibility = 'hidden';
});
Run Code Online (Sandbox Code Playgroud)

如果for...of可用:

for (let el of document.querySelectorAll('.appBanner')) el.style.visibility = 'hidden';
Run Code Online (Sandbox Code Playgroud)

  • 我会选择“显示”而不是“可见性” (4认同)

fed*_*o-t 29

var appBanners = document.getElementsByClassName('appBanner');

for (var i = 0; i < appBanners.length; i ++) {
    appBanners[i].style.display = 'none';
}
Run Code Online (Sandbox Code Playgroud)

的jsfiddle.

  • @DenisSavenko - 它是有效的`var`语法来声明用逗号分隔的多个变量,但是在这种情况下,在'for`循环中***声明```和`var`是错误的 - 虽然这不是实际上导致错误,它只是凌乱. (4认同)