<head>
<script type="text/javascript" language="javascript">
function ss(ss){
alert(ss);
}
</script>
</head>
  
<body>
    <%
     String str = "s001";
     out.print("<img src = 'gif/"+str+".gif'"+"onclick='ss("+str+")'></img>");
     %>
 </body>
为什么ss方法,不能被调用呢?变量str的数据类型是数字的时候就可以正确调用...
比如str = "001";但是被ss(str)调用以后,输出的却是1,不是001,实在搞不懂!
请高手指点下!

解决方案 »

  1.   

    哥们 我好像又一次也遇到过 传递的值跟显示的值不一致
         你加上上单引号试看看……
         onclick = "ss("+'str'+")"
      

  2.   

     你用字符类型最终生成如下代码: 
     <img src = 'gif/s001.gif'onclick='ss(s001)'> </img>  
    s001当然未定义错误了。如果是001的话javascript会认为是数字类型,那就肯定正确了
    而且会把前面的0舍去。
     所以应该改成 
    <head> 
    <script type="text/javascript" language="javascript"> 
    function ss(ss){ 
    alert(ss); 

    </script> 
    </head> 
      
    <body> 
        <% 
        String str = "s001"; 
        out.print(" <img src = 'gif/"+str+".gif'"+" onclick=ss('"+str+"')> </img>"); 
        %> 
    </body> 覆盖一下就可以了。
      

  3.   

    用firebug吧,很好用的。另外,这种错误,看看渲染出来的html也能直接搞定的。good luck
      

  4.   

    你的意思是直接想把它当成字符串吧,但因为js是弱类型,而你那个代码在HTML中就相当于
    onclick=ss(str);如果想保证它为String类型,就应该是onclick=ss("str");
    我根据你这个代码试了一下,加单引号不行,用\"转义成双引号才显示出001,即:
     out.print(" <img src = 'gif/"+str+".gif'"+" onclick=ss(\""+str+"\")> </img>");