javascript运行在浏览器,jsp运行在服务器.首先是服务器运行jsp程序生成html(包含js代码)再由浏览器解析后呈现.
或者可以把setCount()返回值以http参数方式发送给服务器,再次生成页面.

解决方案 »

  1.   

    不行,要不你这样做。
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
      <head>    
        <title>希望实现js与EL表达式的结合</title>    
        <script language="javascript">    
            function setCount()
            {        
                return 8;
            }
        </script>
      </head>
      <%
    int a=8;
       %>
      <body> 
        <div id="MainDiv" onclick="setDiv()">
            <!-- 这里的Value值希望从js中的setCount()方法获得 -->    
            <c:forEach begin="0" end="<%=a%>" step="1">
                <div id="Mydiv">dd</div>
            </c:forEach>
        </div>    
      </body>
    </html>
      

  2.   

    做不到,JSTL 是在页面生成前就已经执行完了,所以说并不能使用 JavaScript 来控制 JSTL。如果参数写在 JavaScript 中的,那么生成 DIV 的循环也应该写成 JavaScript 的。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
      <title>希望实现js与EL表达式的结合</title>
    </head><script type="text/javascript">
    function getCount() {
      return 8;
    }function showDiv(pid) {
      var p = $(pid);
      for(var i = 0, k = getCount(); i < k; i++) {
        p.innerHTML += '<div id="Mydiv_' + i + '">' + ('dd' + i) + '</div>';
      }
    }function setDiv() {
      alert('onclick');
    }window.$ = function(id) {
      if(typeof id == 'string') {
        return document.getElementById(id);
      }
      return id;
    }
    </script><body>
      <div id="MainDiv" onclick="setDiv()">
        <script type="text/javascript">
          showDiv('MainDiv');
        </script>
      </div>
    </body>
    </html>