<c:if test="${not empty result[k].answerer and ((result[k].initialState eq 1 and result[k].hasAudit eq true) or result[k].initialState eq 0)}">
<c:choose>
<c:when test="${result[k].replyWarningType eq 1 or result[k].auditWarningType eq 1}">
<!-- 满足条件 -->
</c:when>
<c:otherwise>
<!-- 不满足条件 -->
</c:otherwise>
</c:choose>
</c:if>
</body>
不知道你的k是什么 按js拆过来是这个样子的;eq是==的意思;<c:choose>相当于if else
可能的原因有以下几种:
确保jsp页面有引用c标签,可以通过在c:if之前${user}这样也可以输出session里的对象会打印出类包名。
确保页面引用了jquery
js页面加载的问题,js加载是有顺序的。要在dom都加载好后才能取得页面的ID值的。
样式也可能使你的窗口看不到比如被别的层遮了。特别是iframe容易遮别人
解决调试方法代码如下:
如果类不为空,这里会显示类名:${user}
<c:if test="${empty user}">
<script>
alert("说明user为空,已经进入JS")//alert是js最好的调试工具可以知道js是否已经执行到这行
$(function(){//用jquery页面初始化加载会在dom加载完后执行确保curtain等ID能取到
alert($("#curtain").html())
$("#dialogue").css({top:150,left:500,position:"absolute","z-index":99999})//这个要绝对定位z-index要比较高才能浮起来
$("#curtain").show()
})
</script>
</c:if>
c:if是在界面生成的时候进行编译,那会哪来的js变量呢,最好改成用js来拼接<c:if test='${"+eval(deptno)+"==dept.DEPTNO }'>selected</c:if>
可以写成: deptno ==' ${dept.DEPTNO}'?'selected':''