我确定已经在某个地方得到了解答,但我无法找到我正在寻找的东西,因为我真的不知道如何解释它。
我将从我的代码示例开始
<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变量,那么我想更改该元素的样式。问题是,我不知道如何实际引用该元素来改变风格。
答案 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)
基本上,你说getElementsByClass返回了一个显然不能在那里工作的元素数组,所以有点谷歌搜索出现了!
document.querySelector('[data-number="' + String(nextquestion) + '"]').style.display = "inline";
而不是我可怕的if声明!
谢谢大家的帮助!