如何引用if语句中的元素

时间:2015-01-31 21:17:21

标签: javascript html css

我确定已经在某个地方得到了解答,但我无法找到我正在寻找的东西,因为我真的不知道如何解释它。

我将从我的代码示例开始

<script>
function choose(element){
    var parent = element.parentNode;
    var nextquestion = parseInt(parent.dataset.number)+1;
    parent.style.display = "none";

    if parseInt(getElementsByClassName("QuestionGroup").dataset.number) == nextquestion {
        WHATGOESHERE?.style.display = "inline";
    }
}
</script>
<div class="QuestionGroup" data-number="1" style="display:inline;">
<button onclick="choose(this);">An Answer</button></div>
<div class="QuestionGroup" data-number="2">Second Question</div>

基本上,如果用户单击该按钮,则选择()将检查按钮所属的问题。然后它将隐藏该组并取消隐藏第二个问题组。这一切都可以解决我想要取消隐藏下一个问题的部分。

我使用if语句检查所有元素&#34; QuestionGroup&#34;对于data-number属性,如果该属性等于nextquestion变量,那么我想更改该元素的样式。问题是,我不知道如何实际引用该元素来改变风格。

2 个答案:

答案 0 :(得分:0)

var parent = element.parentNode;
var nextquestion = parseInt(parent.dataset.number)+1;
parent.style.display = "none";

if (parent.getElementsByClassName("QuestionGroup")[nextquestion]) {
    parent.getElementsByClassName("QuestionGroup")[nextquestion].style.display = "inline";
}

很难弥补代码的哪些部分涉及到什么。这应该有效,但我不知道它是否会给出所需的结果。让我知道或详细说明您的问题和代码。

如上所述getElementsByClassName返回节点列表。您可以检查index+1是否存在。如果是这样的话。

答案 1 :(得分:0)

啊哈,谢谢你们,你们给了我极大的启发。我知道javascript与我过去使用的其他语言的工作方式略有不同。

基本上,你说getElementsByClass返回了一个显然不能在那里工作的元素数组,所以有点谷歌搜索出现了!

document.querySelector('[data-number="' + String(nextquestion) + '"]').style.display = "inline";

而不是我可怕的if声明!

谢谢大家的帮助!