如何只显示"每次单击时都有getElementsByClassName

时间:2015-12-03 12:19:24

标签: javascript getelementsbyclassname



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




上面的代码并不是我需要的,因为它只会激活一次元素。

下面的代码不是我需要的,因为它只激活点击中所有出现的元素



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;
}




请参阅JS Fiddle here获取HTML以及我目前使用它的位置(请注意,我会将onLoad选项更改为No wrap,但JSFiddle似乎已删除了Frameworks和Extensions,或者至少我无法看到它:/,所以我怀疑为什么"回答"没有被揭示。当我测试自己答案确实显示时)。

我的专业知识非常有限,我被困住了;我只想要点击的元素"显示",而不是所有的一次。请帮忙!

例如:

一个+一个=两个

两个+两个=四个

如果' One + One ='点击,然后点击四个'不会显示,只是' Two'

1 个答案:

答案 0 :(得分:2)

您可以使用nextElementSibling获取下一个兄弟。不需要使用迭代。



function zxcv(el) {
    el.style.display = "none";
    var elements = el.nextElementSibling;
    elements.style.display = 'block';   
    return false;
}

<a class="mathslink" href="#" rel="nofollow" onClick="zxcv(this)">One + One Equals</a>
<div class="thishere" style="display:none;"><span class="mathsanswer"><strong>Two</strong></span></div>

<a class="mathslink" href="#" rel="nofollow" onClick="zxcv(this)">Two + Two Equals</a>
<div class="thishere" style="display:none;"><span class="mathsanswer"><strong>Four</strong></span></div>
&#13;
&#13;
&#13;