我有一个show / hide div脚本,当用户单击以显示div时,它还会记录信息。日志工作正常,div显示/隐藏,但只有在第二次单击时,它才会在添加日志功能之前执行此操作。 我是一个完整的JS / JQuery菜鸟所以请解释我出错的地方!
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
function showAnswer(whichLayer,id,lang){
var whichLayer, id, lang;
if(document.getElementById(whichLayer).style.display =="none"){
document.getElementById(whichLayer).style.display = "block";
$.post("../../logclick.php", {id: id, lang: lang});
}else{
document.getElementById(whichLayer).style.display = "none";
}
}
</script>
编辑:调用该函数的代码。
<div class="question">
<a href="javascript:showAnswer('2111692','1692','en')">Click here</a>
</div>
<div id="2111692" class="answer">Answer shows here.</div>
样式表:
.answer {
clear: both;
margin-left: 30px;
display: none;
}
答案 0 :(得分:0)
由于您正在使用(和标记)jQuery,我们可以.is(':hidden')
替换style.display == 'none'
:
function showAnswer(whichLayer, id, lang) {
if ($('#' + whichLayer).is(':hidden')) {
$('#' + whichLayer).show();
$.post("../../logclick.php", {
id: id,
lang: lang
});
} else {
$('#' + whichLayer).hide();
}
}
您需要点击两次,因为第一次style.display == 'none'
评估为false
,因此请转到else
并将style.display
实际设置为none
。