Javascript 相关下拉元素的if-else语句存在问题
我正在创建一系列下拉元素,其中包含一个最初可见的问题和一个答案,单击该问题可在Javascript 相关下拉元素的if-else语句存在问题,javascript,jquery,if-statement,this,display,Javascript,Jquery,If Statement,This,Display,我正在创建一系列下拉元素,其中包含一个最初可见的问题和一个答案,单击该问题可在display:block和display:none之间切换。单击每个问题的答案也会导致所有其他答案变为display:none 我遇到的问题与下面的if-else语句有关。单击问题时,隐藏与此问题无关的所有答案。如果下一个答案是display:none,则将其更改为display:block 下一个if-else语句应该指示:如果下一个答案是display:block,则将其更改回display:none。但是,虽然
display:block
和display:none
之间切换。单击每个问题的答案也会导致所有其他答案变为display:none
我遇到的问题与下面的if-else语句有关。单击问题时,隐藏与此问题无关的所有答案。如果下一个答案是display:none
,则将其更改为display:block
下一个if-else语句应该指示:如果下一个答案是display:block
,则将其更改回display:none
。但是,虽然我没有收到任何控制台错误,但if-else语句根本没有按当前状态运行
希望这是另一个我在阅读代码时有点笨的例子
函数脚本(){
$('question')。在('click',function()上{
$(“#常见问题”).find(“.answer”).not($(this)).hide();
if($(this).next(“.answer”).css(“display”,“none”)){
$(this.next(“.answer”).css(“display”,“block”);
}else if($(this).next(“.answer”).css(“显示”、“块”)){
$(this.next(“.answer”).css(“display”,“none”);
};
});
}
$(文档).ready(脚本)代码>
问题1
答复1
问题2
答复2
问题3
答复3
您的逻辑中有几个问题。首先,您的if
语句条件使用css()
的setter,而不是getter。因此,当它强制jQuery对象返回布尔值时,它将始终返回true
其次,在执行逻辑之前隐藏所有.answer
元素,因此即使在更正后,if
条件也会始终看到.answer
是显示:none
,因为您刚刚隐藏了它
第三,您将$(this)
提供给not()
,但是this
是对问题的引用,而不是答案的引用。解决了这些问题后,这项工作将:
函数脚本(){
$('.question')。在('click',function(){
var$answer=$(this.next('.answer');
if($answer.css(“display”)=“none”){
$answer.css(“显示”、“块”);
}否则{
$answer.css(“显示”、“无”);
};
$(“#常见问题”).find(“.answer”).not($answer.hide();
});
}
$(文档).ready(脚本)代码>
问题1
答复1
问题2
答复2
问题3
答复3
您似乎在使用Jquery,因此最好使用$('.answer').show()
或$('.answer').hide()
。另外,display:none将应用于所有的类,这就是为什么单击每个问题它会隐藏所有答案的原因。最好在循环中迭代并动态分配类,如-answer-1、answer-2,非常好,谢谢!我曾尝试过涉及toggle()和hide()/show()的解决方案,但由于不断遇到相同的问题,我最终尝试通过使用display属性来显式显示,但没有效果。我正在研究的真实示例还有一些其他元素,它们可以同时进行切换,但我应该能够交叉应用这里使用的逻辑。再次感谢你!