本帖最后由 iouuoi 于 2011-01-06 11:17:34 编辑

解决方案 »

  1.   

    你的这段代码没有问题,估计问题在于obj这个对象是否是你做需要的那个对象。仔细查一下 
      

  2.   

    看错了,你的代码不应该这样写的 ,因为JSP里面的java代码你用JS做判断是没有用的 他无论如何都会执行java代码的。所以你还是换个方式吧。
      

  3.   

    帅哥,你要知道JS和JSP执行的顺序JS怎么可以给JAVA的变量赋值呢
      

  4.   

    这段代码问题不是一般的严重,很显然楼主对jsp,JavaScript的工作原理不是很清楚,jsp中的java代码是运行在后台的,javascript是运行在客户端的。还是先学好基础吧,否则一两句话说不清楚。
      

  5.   

    jsp在编译的时候是先编译java代码的,所以你的js没有执行之前java代码先编译完成了,所以你只会看到最后变量的值是“保健品食品”
      

  6.   

    这段代码实际上执行过程是这样的:
    1.编译JSP,被编译成的Servlet程序中的_jspService方法中该段代码被编译如下
    String utfname="";out.write("function selchange(obj)\n");
    out.write("{\n");
    out.write("var strname=\"\";\n");
    out.write("if(obj.value==\"1\")\n");
    out.write("{\n");
    out.write("strname=\"中药产品\";\n");utfname="中药产品";out.write("}\n");
    out.write("else if(obj.value==\"2\")\n");
    out.write("{\n");
    out.write("strname=\"原料药\";\n");utfname="原料药";out.write("}\n");
    out.write("else if(obj.value==\"3\")\n");
    out.write("{\n");
    out.write("strname=\"中药材\";\n");utfname="中药材";out.write("}\n");
    out.write("else\n");  
    out.write("{\n");
    out.write("strname=\"保健品食品\";\n");utfname="保健品食品";out.write("}\n");2.编译为html页面发回给客户端(js是在客户端执行的)上一步中红字部分是utf的赋值过程,而js实际执行的代码是out.write的所有内容,即这些:
    <%String utfname="";%>
    function selchange(obj)
    {
    var strname="";
    if(obj.value=="1")
    {
    strname="中药产品";
    }
    else if(obj.value=="2")
    {
    strname="原料药";
    }
    else if(obj.value=="3")
    {
    strname="中药材";
    }
    else  
    {
    strname="保健品食品";
    }