function Ltrim(str){return str.replace(/^\s+/, '');}

解决方案 »

  1.   

    首先,你这个问题可以用meizz(梅花雪)的方法一行代码就解决的,没有必要再用更复杂的方法来解决。其次,你的代码确实有问题。你的#这一行起什么作用呢?仅仅是调用了一下自身函数而已,没有将调用的结果利用起来,所以说,你写的递归在思路上错了。试试看这个代码吧:<script>
    function Ltrim(str)
    {
     if(str.charAt(0)==" ")
       {
          str=str.substring(1,str.length)
          str=Ltrim(str)
       }
    return str
      
    }
    </script>
    <body ><input type="text" id="text1">
    <input type="button" onclick="text2.value=Ltrim(text1.value)" value="show">
    <input type="text" id="text2">
    </body>还有第三,trim函数不仅仅是去掉空格,还包括tab等等,所以你的代码用来练练算法就可以了,实用的话还是用meizz给的代码吧。
      

  2.   

    楼上红星,我就是为练算法,我也知道我得程序有问题,也知道你的写法是对的,但是我要的是我程序错在哪里了? 
    如果把我的改成这样结果也是正确的:
    <script type="text/javascript" language="javascript">
    <!--
    function Ltrim(str)
    {
     if(str.charAt(0)==" ")
       {
          str=str.substring(1,str.length)
          Ltrim(str)
       }
      else
      {
       document.all.text2.value=str
      }
      
    }
    function trim(str)
    {
      var result
      result=Ltrim(str)
      
    }
    //-->
    </script><body >
    去掉字串左右边的空格:
    <input type="text" id="text1">
    <input type="button" onclick="trim(document.all.text1.value)" value="show">
    <input type="text" id="text2">
    </body>
      

  3.   

    我不是已经说了吗,你的程序就错在没有利用递归调用的结果。如果没有利用为什么str=str.substring可以执行,为什么undefind?
      

  4.   

    呵呵,原来你还没搞清楚return语句的作用。
    在一个函数中,如果需要返回一个数据,那么就用return语句。在执行到return语句的时候,函数就得到了输出,并且结束当前函数的运行。你把return去掉了,函数就没有了输出,当然就变成undefined了。
      

  5.   

    谢谢,我明白了.
    我把你的该了一下:
    <script>
    function Ltrim(str)
    {
     if(str.charAt(0)==" ")
       {
          str=str.substring(1,str.length)
          str=Ltrim(str)
       }
             alert(str)
    return str
      
    }
    </script>
    <body ><input type="text" id="text1">
    <input type="button" onclick="text2.value=Ltrim(text1.value)" value="show">
    <input type="text" id="text2">
    </body>
    其实每次alert都是显示最后一次递归的str.