为什么我的getParentNode函数返回未定义
Why does my getParentNode function return undefined?
我编写了一个名为getParentNode的函数,用于获取由tagName过滤的特定parentNode。代码如下。我不明白为什么函数返回"未定义"。我认为它应该返回特定的parentNode或null。五体投地!代码也在http://jsfiddle.net/52ed6/2/
<html>
<body>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>
<div>
<span id="reply">Reply</span>
</div>
</li>
</ul>
<script>
// Get specific parentNode
function getParentNode(obj, selector){
if (obj.parentNode) {
if ( obj.parentNode.nodeName.toLowerCase() === selector ) {
return obj.parentNode;
} else {
getParentNode(obj.parentNode, selector);
}
} else {
return null;
}
}
var reply = document.getElementById('reply');
// The function getParentNode() novalid
// The next statement popup "undefined", why?
alert(getParentNode(reply, 'li'))
</script>
</body>
</html>
getParentNode(obj.parentNode, selector);
需要一个return
return getParentNode(obj.parentNode, selector);
我猜你需要改变这个:
} else {
getParentNode(obj.parentNode, selector);
}
:
} else {
return getParentNode(obj.parentNode, selector);
}
如果没有return
,你的函数将执行,然后不返回任何值给原始调用者。您需要return
来递归地完成此工作。
此特定块绕过任何返回语句。因此,它隐式地返回没有任何已定义的值,因此未定义。
} else {
getParentNode(obj.parentNode, selector);
}
你可能想要
} else {
return getParentNode(obj.parentNode, selector);
}
你忘了return
: http://jsfiddle.net/52ed6/5/
return getParentNode(obj.parentNode, selector);
相关文章:
- 这.SOMETHING 总是返回未定义的 - extjs
- React+Meteor:this.ops返回未定义
- 解析-为什么user.getSessionToken()返回未定义的结果
- Javascript函数返回未定义
- JavaScript-获取数据属性的值返回未定义的值
- .val()返回未定义的.text返回随机代码
- 为什么innerHTML返回“未定义”
- "这个“;正在返回未定义的
- 谷歌地图:函数返回未定义的值在console.log中运行良好
- Javascript json返回未定义
- importScripts在web工作程序中返回未定义的
- 访问嵌套 json 对象的属性将返回未定义
- NativeAppEventEmitter返回未定义的
- 我的函数返回“未定义”
- 新手Javascript函数返回未定义的石头剪刀游戏
- Nodejs模块函数返回未定义的,而不是异步的
- .getElementById在.createTextNode中返回未定义
- javascript函数不返回未定义的值
- Typeahead的Javascript类型返回未定义
- Javascript可见元素返回未定义