我有一个页面(它是一个网站的常见问题页面),这样当用户点击一个div(例如#question01)时,会出现一个新的div,它出现在它下面。真的很简单,但问题是,通过我的功能,当你第一次点击时,什么都没有出现,然后再点击一下就可以了。我的#faqAnswer01现在有一个"取消隐藏"设置为显示的类:块; (.hide = display:none;)
所以这是我的两个问题:
1-为什么我必须点击两次才能执行我的功能?
2-我如何修复我的代码,以便只需点击一下就能运行?
HTML CODE
<div id="faqContainer">
<div id="question01" onclick="showAnswer('faqAnswer01','imgArrow01');">Here's a question?<img src="public/images/gt.png" class="imgArrow" id="imgArrow01"></div>
<div id="faqAnswer01" class="faqAnswerDiv hide">bla bla bla</div>
<div id="question02" onclick="showAnswer('faqAnswer02','imgArrow02');">Another question here? <img src="public/images/gt.png" class="imgArrow" id="imgArrow02"></div>
<div id="faqAnswer02" class="faqAnswerDiv hide">answer here.</div>
</div>
我的功能:
function showAnswer(idAnswer , idImg) {
if (document.getElementById(idImg).src == "http://www.cbifinance.org/public/images/gt.png") {
document.getElementById(idImg).src = "http://www.cbifinance.org/public/images/gt90.png";
document.getElementById(idAnswer).className = 'faqAnswerDiv unhide';
} else {
document.getElementById(idImg).src = "http://www.cbifinance.org/public/images/gt.png";
document.getElementById(idAnswer).className = 'faqAnswerDiv hide';
}
}
答案 0 :(得分:3)
尝试将image.src
更改为完整的网址,它应该有效。
这可行的原因是您的src
为public/images/gt.png
,即使加载正确找到的图片时,src
仍为public/images/gt.png
。
因此,第一次单击时,它会运行到else语句中,并将src
设置为完整的绝对URL。然后再次单击,它将src
更改为您第一次的预期。同样适用于class
,它将hide
类添加到图像中,它已经具有,但第二次添加show
。代码运行正常,if语句错误。
答案 1 :(得分:2)
因为第一次src
不是您if
正在检查的内容
src="public/images/gt.png"
VS
src="http://www.cbifinance.org/public/images/gt.png"
然后在第一次单击时将其设置为该值。然后第二次满足您的if
条件。