从getElementsByClassName

时间:2015-11-24 14:24:12

标签: javascript getelementsbyclassname

我正在尝试从下面删除[0],而是替换为迭代,因为它似乎是另一篇帖子的解决方案here

然而,我的知识非常有限,因此可能不是解决方案或需要变​​更。 正在点击时调用该函数,我只查找被激活的元素。 例如,如果出现两次“thishere”,则只会调用单击的事件。

非常感谢任何帮助。

function zxcv(el) {
    el.style.display = "none";
    el.parentNode.parentNode.getElementsByClassName("thishere")[0].style.display = 'block';
    return false;
}

5 个答案:

答案 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的循环。

步骤:

  1. 获取一个包含类名为thishere

    的所有元素的数组

    var elements = el.parentNode.parentNode.getElementsByClassName('thishere');

  2. 创建一个循环来迭代元素数组中的每个元素

    for(var i in elements) { elements[i].style.display = 'block'; }

  3. 对于上述循环,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;
}

您可以通过多种方式遍历数组: