当list集合不为空的时候
<logic:iterate id="item" name="list">
 <script language="JavaScript">
  alert("开始");
  document.getElementById('conditionTime').style.background='#F00';  
</script>
</logic:iterate>
里面的js单纯的静态测试是可以实现效果的但是改成这样动态的js
 <logic:iterate id="item" name="list">
   <script language="JavaScript">
      alert("开始");
      document.getElementById('conditionTime').style.background='#F00';
      var time=${item.stateChangeTime};
      alert("time="+time.substring(8,10));
      var day=time.substring(8,10);
      alert("day="day);
      document.getElementById('F130701').style.background='#F00';
      alert("第三部");
      document.getElementById('${item.bianhao}'+day).style.background='#F00';  
    </script>
</logic:iterate>
现在连js中最前面的两端静态的语句都不执行了???
到底是哪里有问题呢,难道下面的EL表达式会影响到js的整个程序执行

解决方案 »

  1.   

    要看你的框架有没把JS当作纯JS看待.如果有的话.里面的${}不会给编译.
    你看看生成后最终的源代码有没解释到.
      

  2.   

    这是编译后的源文件
     <script language="JavaScript">
      alert("开始");
      document.getElementById('conditionTime').style.background='#F00';
          var time=2009-05-06 09:13:23;
            alert("time="+time.substring(8,10));
            var day=time.substring(8,10);
            alert("day="day);
            document.getElementById('F130701').style.background='#F00';
            alert("第三部");
            document.getElementById('F1408'+day).style.background='#F00';  
        </script>
    el表达式部分被编译了,但是那个js变量day没有被编译,
    我是想让'${item.bianhao}'+day组合成像F130701这样的id名字格式
    这要怎么完成呢?
    注红色背景的表示编号,绿色背景的表示日期
      

  3.   

    我知道了刚才这里
    var time=${item.stateChangeTime}; 
    应该写成这样
    var time='${item.stateChangeTime}';
    现在问题解决了多谢!
      

  4.   

    我也遇到了同样的情况,但似乎以上方法并不起效。页面源码
    var currPage='${page.currentPage }';
    alert(currpage);编译后
    var currPage='5';
    alert(currpage);
    奇怪的是并没有弹出窗口。