我正在尝试创建一个父div(id="lol"
)子项的数组,并且除了具有display:none;
的子项之外,他们会获取它们以更改id="a"
。我试过这个,但它不起作用。如何改进它以使其工作?
function myFunction() {
var x = document.getElementById('a');
var children = [].slice.call(document.getElementById('lol').getElementsByTagName('*'),0);
var arrayLength = children.length;
for (var i = 0; i < arrayLength; i++) {
var name = children[i].getAttribute('id');
var z = document.getElementById(name);
z.style.display = 'none';
}
x.style.display = 'block';
}
答案 0 :(得分:3)
如果每个孩子都有.image-box {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
属性,那么它将起作用。否则,某些孩子可能没有id
属性,在这种情况下,变量id
将为z
并且undefined
属性超过style
z
会给出错误。简单的解决方法就是处理undefined
变量:
undefined
变量 if(z)
z.style.display = 'none';
也是如此。
答案 1 :(得分:0)
如何使用jQuery?
$('#lol').children(':not(#a)').hide();
如果jQuery不是一个选项,你可以这样做:
var lol = document.getElementById('lol');
var children = lol.querySelectorAll(':not(#a)');
for(var i=0;i<children.length;i++) {
children[i].style.display = 'none';
}
更多&#34;低级&#34;:
var lol = document.getElementById('lol');
var children = lol.childNodes;
for(var i=0;i<children.length;i++){
if(children[i].id != 'a') {
children[i].style.display = 'none';
}
}
答案 2 :(得分:0)
function myFunction() {
var children = [].slice.call(document.getElementById('lol').getElementsByTagName('*'),0);
var arrayLength = children.length;
for (var i = 0; i < arrayLength; i++) {
children[i].style.display = 'none';
}
document.getElementById('a').style.display = 'block';
}