首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

何位大侠帮忙看下,一直没弄懂

2013-12-04 
哪位大侠帮忙看下,一直没弄懂!script languagejavascriptfunction buffer(temp){if(temp1){%reque

哪位大侠帮忙看下,一直没弄懂!
        <script language="javascript">
        function buffer(temp){

if(temp==1){
<%request.setAttribute("m", "1");%>}
else if(temp==2){
<%request.setAttribute("m", "2");%>}
else if(temp==3){
<%request.setAttribute("m", "3");%>}
else if(temp==4){
<%request.setAttribute("m", "4");%>}
else if(temp==5){
<%request.setAttribute("m", "5");%>}
else if(temp==6){
<%request.setAttribute("m", "6");%>}

}
        </script>
上面这段代码,执行后jsp页面通过getAttribute()取到的总是最后temp=6情况的结果,貌似分支语句不起作用,为什么?哪位大侠帮忙分析一下?
[解决办法]
你js 执行前 后台先编译页面

编译的时候 <%里面的代码会执行

你的js代码 和   《%里面的代码 不在同一个执行层次中
[解决办法]
#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>');

热点排行