把js中的if多条件判断修改成jstl中<c:if>标签判断逻辑拆分的问题!

JavaScript022

把js中的if多条件判断修改成jstl中<c:if>标签判断逻辑拆分的问题!,第1张

<body>

       <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':''