getElementByID 有效,getElementsByClassName 不起作用
getElementByID works, getElementsByClassName does not work
我正在研究一个解决方案,其中javascript更改div1而不是div2。此代码适用于getElementbyId
,但不适用于getElementbyClassName
。为什么这不起作用?
function refer(Div1, Div2) {
if (document.getElementByClassName('Div1')) {
if (document.getElementByClassName('Div1').style.display == 'block') {
var elems = document.getElementsByClassName('Div2');
for(var i = 0; i < elems.length; i++) {
elems[i].style.display = 'block';
}
var elem = document.getElementsByClassName('Div1');
for(var i = 0; i < elem.length; i++) {
elem[i].style.display = 'none';
}
}
}
}
下面是如何使用getElementsByClassName
的示例:
这对你有用吗?
array = document.getElementsByClassName('div1');
for (i = 0; i < array.length; i++) {
array[i].style.backgroundColor = "red";
}
在Chrome和Edge中工作没有问题。
你使用数组作为对象,getElementbyId
和 getElementsByClassName
是:
-
getElementbyId
将返回一个对象。 -
getElementsByClassName
将返回一个数组。
getElementsByClassName
getElementsByClassName(classNames)
方法采用一个字符串 包含一组无序的唯一空格分隔标记 表示类。调用时,该方法必须返回实时NodeList
对象,包含文档中所有元素 具有该参数中指定的所有类,并获得了 通过在空格上拆分字符串来类。如果没有令牌 在参数中指定,则该方法必须返回空 节点列表。
https://www.w3.org/TR/2008/WD-html5-20080610/dom.html#getelementsbyclassname
getElementById
getElementById(( 方法访问具有指定 id 的第一个元素。
http://www.w3schools.com/jsref/met_doc_getelementbyid.asp
在您的代码中,这些行:
1
if (document.getElementByClassName('Div1')) {
2
if (document.getElementByClassName('Div1').style.display == 'block') {
不会按预期工作:特别是第二(2(行,
因为getElementByClassName
将返回一个数组,并且数组将没有style
属性,您将通过迭代它们来访问每个element
。
这就是为什么函数getElementById
为您工作的原因,该函数将返回 直接对象 ,因此您将能够访问 style
属性。
一个工作代码:
function refer(Div1,Div2) {
var elem = document.getElementsByClassName('Div1');
var elems = document.getElementsByClassName('Div2');
for(var i = 0; i < elem.length; i++) {
if (elem[i]) {
if (elem[i].style.display == 'block') {
elem[i].style.display = 'none';
for(var i = 0; i < elems.length; i++) {
elems[i].style.display = 'block';
}
}
}
}
}
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 面向对象的Javascript代码在IE7中不起作用
- 分部隐藏在jquery中不起作用
- 在phonegap应用程序内部重定向不起作用
- Array.length似乎不起作用;console.log则显示其他情况
- $ionicplatform内的$scope不;不起作用
- 我的javascript for循环不起作用
- Meteor-添加用户自定义字段的方法不起作用
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- Textarea必需的attribut在javascript中不起作用
- 为什么javascript:void(0)在Firefox中不起作用
- 退出全屏不起作用