执行后 源代码的值就是temp==6的情况下set后的值:"6"

解决方案 »

  1.   

    你js 执行前 后台先编译页面编译的时候 <%里面的代码会执行你的js代码 和   《%里面的代码 不在同一个执行层次中
      

  2.   

    服務器執行時只看后臺代碼,前臺代碼是不執行的,你這段代碼實際上在服務器看來就是:
    <%request.setAttribute("m", "1");%>
    <%request.setAttribute("m", "2");%>
    <%request.setAttribute("m", "3");%>
    <%request.setAttribute("m", "4");%>
    <%request.setAttribute("m", "5");%>
    <%request.setAttribute("m", "6");%>然后,執行完的頁面到流覽器,生成html后就變成這樣
    function buffer(temp){
    if(temp==1){}
    else if(temp==2){}
    else if(temp==3){}
    else if(temp==4){}
    else if(temp==5){}
    else if(temp==6){}
    }你想干什麽?新手的正常反應,服務器端/客戶端分不清...
      

  3.   

    #5说的对啊。亲,jsp是会被编译成java代码,最终编译成servlet的。在<%%>之间的代码直接变成java,不在<%%>之间的代码一律变成字符串放到response.write中写到http响应流中去了。so,你的那一坨if-else不是在服务器上运行,因为他是js,他在浏览器中才会得以解析。
    js是客户端浏览器在跑,是访问者的CPU在解析指令。
    而java代码是在服务器上跑的,是服务器的CPU在解析指令。你的代码变成java就是:response.write(" <script language=\"javascript\">\n");
    response.write("function buffer(temp){\n");
    response.write("if(temp==1){\n");
    request.setAttribute("m", "1");
    response.write('}\n');
    response.write('else if(temp==2){\n');
    request.setAttribute("m", "2");%>
    response.write('}\n');
    response.write('else if(temp==3){\n');
    request.setAttribute("m", "3");
    response.write('}\n');
    response.write('else if(temp==4){\n');
    request.setAttribute("m", "4");
    response.write('}\n');
    response.write('else if(temp==5){\n');
    request.setAttribute("m", "5");
    response.write('}\n');
    response.write('else if(temp==6){\n');
    request.setAttribute("m", "6");
    response.write('}\n');
    response.write('}\n');
    response.write('</script>');