我正在尝试从下面删除[0]
,而是替换为迭代,因为它似乎是另一篇帖子的解决方案here
然而,我的知识非常有限,因此可能不是解决方案或需要变更。 正在点击时调用该函数,我只查找被激活的元素。 例如,如果出现两次“thishere”,则只会调用单击的事件。
非常感谢任何帮助。
function zxcv(el) {
el.style.display = "none";
el.parentNode.parentNode.getElementsByClassName("thishere")[0].style.display = 'block';
return false;
}
答案 0 :(得分:2)
只需写一个循环。
function zxcv(el) {
el.style.display = "none";
var elements = el.parentNode.parentNode.getElementsByClassName("thishere");
for(var i in elements) {
elements[i].style.display = 'block';
}
return false;
}
正如我们在评论中所说,要激活只有onclick,你可以这样做:
function zxcv(el) {
// catch element and set display block
el.style.display = "block";
return false;
}
var elements = document.getElementsByClassName("thishere");
for(var i in elements) {
// we hide all elements
elements[i].style.display = "none";
// we handled the click event
elements[i].click(function(e) {
// we call zxcv with the element as parameter
zxcv(this);
});
}
答案 1 :(得分:0)
听起来您想将相同的样式应用于所有匹配元素?
如果是这样的话:
function zxcv(el) {
el.style.display = "none";
var els = el.parentNode.parentNode.getElementsByClassName("thishere");
for ( var i = 0; i < els.length; ++i )
els[i].style.display = 'block';
return false;
}
答案 2 :(得分:0)
您只需设置一个类似于您发布的Q&amp; A的循环。
步骤:
获取一个包含类名为thishere
var elements = el.parentNode.parentNode.getElementsByClassName('thishere');
创建一个循环来迭代元素数组中的每个元素
for(var i in elements) {
elements[i].style.display = 'block';
}
对于上述循环,var i
初始化将用于迭代elements
数组的变量。然后使用i
作为数组elements
答案 3 :(得分:0)
只需遍历元素并将样式应用于[0]元素。
function zxcv(el) {
el.style.display = "none";
var elements = el.parentNode.parentNode.getElementsByClassName("thishere");
for( var i = 0; i < els.length; ++i ) {
if(i===0)
{
elements[i].style.display = 'block';
break;
}
}
return false;}
答案 4 :(得分:-2)
其中一种方式:
function zxcv(el) {
el.style.display = "none";
el.parentNode.parentNode.getElementsByClassName("thishere").forEach(function(i, elem){
elem.style.display = 'block';
});
return false;
}
您可以通过多种方式遍历数组: