javascript的递归函数问题,js高手请进!!!
<body><scripttype="text/javascript">functionfindParent(e,str){console.count("次数");if(...
<body>
<script type="text/javascript">
function findParent(e,str){
console.count("次数");
if(!e.parentNode){
return null;
}
else if(e.parentNode.nodeName.toLowerCase()==str)
{
return e.parentNode;
}
else
{
findParent(e.parentNode,str);
}
}
</script>
<form>
<div>
<div>
<div>
<button id="myBtn">父节点</button>
<script type="text/javascript">
var myBtn=document.getElementById("myBtn");
myBtn.onclick=function(){
var oDiv=findParent(myBtn,"form");
alert(oDiv);
}
</script>
</div>
</div>
</div>
</form>
</body>
</html>
这是我之前写的一个js程序,用于查询一个dom的指定标签父节点。可是运行出错了。后来改写成:
<body>
<script type="text/javascript">
function findParent(e,str){
console.count("次数");
if(!e.parentNode){
return null;
}
else if(e.parentNode.nodeName.toLowerCase()==str)
{
return e.parentNode;
}
else
{
return findParent(e.parentNode,str);
}
}
</script>
<form>
<div>
<div>
<div>
<button id="myBtn">父节点</button>
<script type="text/javascript">
var myBtn=document.getElementById("myBtn");
myBtn.onclick=function(){
var oDiv=findParent(myBtn,"form");
alert(oDiv);
}
</script>
</div>
</div>
</div>
</form>
</body>
</html>
程序就运行成功了,这让我很郁闷,就是在递归函数中,采用了return返回一下。console.count()显示函数都是执行了四次,采用单步调试,运行步骤一模一样,监视e变量,变化情况也一样,我就纳闷了,加return和不加return的区别到底在哪里? 展开
<script type="text/javascript">
function findParent(e,str){
console.count("次数");
if(!e.parentNode){
return null;
}
else if(e.parentNode.nodeName.toLowerCase()==str)
{
return e.parentNode;
}
else
{
findParent(e.parentNode,str);
}
}
</script>
<form>
<div>
<div>
<div>
<button id="myBtn">父节点</button>
<script type="text/javascript">
var myBtn=document.getElementById("myBtn");
myBtn.onclick=function(){
var oDiv=findParent(myBtn,"form");
alert(oDiv);
}
</script>
</div>
</div>
</div>
</form>
</body>
</html>
这是我之前写的一个js程序,用于查询一个dom的指定标签父节点。可是运行出错了。后来改写成:
<body>
<script type="text/javascript">
function findParent(e,str){
console.count("次数");
if(!e.parentNode){
return null;
}
else if(e.parentNode.nodeName.toLowerCase()==str)
{
return e.parentNode;
}
else
{
return findParent(e.parentNode,str);
}
}
</script>
<form>
<div>
<div>
<div>
<button id="myBtn">父节点</button>
<script type="text/javascript">
var myBtn=document.getElementById("myBtn");
myBtn.onclick=function(){
var oDiv=findParent(myBtn,"form");
alert(oDiv);
}
</script>
</div>
</div>
</div>
</form>
</body>
</html>
程序就运行成功了,这让我很郁闷,就是在递归函数中,采用了return返回一下。console.count()显示函数都是执行了四次,采用单步调试,运行步骤一模一样,监视e变量,变化情况也一样,我就纳闷了,加return和不加return的区别到底在哪里? 展开
展开全部
亲,加不加return你的代码本身是没问题的,但是区别在于没有return的话你怎么拿到返回值呢。
以下是特征等效代码
function b() {
return 5;
}
function a() {
b();
}
alert(a());//肯定什么都没有啊,虽然b()执行了,就像你说的,怎么调试都是完全相同的过程,变成
function a() {
return b();
}
alert(a());//这时候你才能得到5啊
以下是特征等效代码
function b() {
return 5;
}
function a() {
b();
}
alert(a());//肯定什么都没有啊,虽然b()执行了,就像你说的,怎么调试都是完全相同的过程,变成
function a() {
return b();
}
alert(a());//这时候你才能得到5啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询