#######再再次请教函数递归,去掉空格函数############### function Ltrim(str){return str.replace(/^\s+/, '');} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先,你这个问题可以用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给的代码吧。 楼上红星,我就是为练算法,我也知道我得程序有问题,也知道你的写法是对的,但是我要的是我程序错在哪里了? 如果把我的改成这样结果也是正确的:<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> 我不是已经说了吗,你的程序就错在没有利用递归调用的结果。如果没有利用为什么str=str.substring可以执行,为什么undefind? 呵呵,原来你还没搞清楚return语句的作用。在一个函数中,如果需要返回一个数据,那么就用return语句。在执行到return语句的时候,函数就得到了输出,并且结束当前函数的运行。你把return去掉了,函数就没有了输出,当然就变成undefined了。 谢谢,我明白了.我把你的该了一下:<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. 求一个filter讲解,代码贴在里面了。 Jquery 根据内容精确查找元素? jsp错误修改,急急急! 如何及时刷新页面? 求 一实现动态加载的树形菜单 控件 帮忙,看看这段代码实现的什么功能?谢谢。。。 关于添加播放列表的!求救!再现等待!急啊! 模式窗口打开的网页,如何动态的改变页面的TITLE... 如何判断当前IE的版本是在6.0之上还是之下? 有框架结构的上菜单栏出现页面不稳定问题,答对者有分送 一个简单问题 如何使用javascript来修改系统时间?下面的代码有何问题吗/
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给的代码吧。
如果把我的改成这样结果也是正确的:
<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>
在一个函数中,如果需要返回一个数据,那么就用return语句。在执行到return语句的时候,函数就得到了输出,并且结束当前函数的运行。你把return去掉了,函数就没有了输出,当然就变成undefined了。
我把你的该了一下:
<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.