从函数返回的变量一旦返回就没有定义
Returning variable from function is undefined once returned
是否有任何理由:
function find_parent_p(x){
daddy = jQuery(x).parent();
if(daddy.attr("tagName").toLowerCase() == 'p'){
console.log(daddy,"result");
return (daddy);
} else {
find_parent_p(daddy);
}
}
jQuery(document).ready(function($){
$('img').each(function(){
next = find_parent_p($(this));
})
});
将在控制台中返回一个jQuery对象(预期的行为),其中如下返回Undefined
我所做的就是将对console.log
的调用移动到函数之外,并在调用它之后:
function find_parent_p(x){
daddy = jQuery(x).parent();
if(daddy.attr("tagName").toLowerCase() == 'p'){
return (daddy);
} else {
find_parent_p(daddy);
}
}
jQuery(document).ready(function($){
$('img').each(function(){
next = find_parent_p($(this));
console.log(next,"result");
})
});
您在else
条件中缺少return
语句。如果你的函数递归,那么顶层调用将不会返回任何东西,你将以undefined
结束。
else {
return find_parent_p(daddy);
}
我不确定这是否是导致问题的原因,但是该函数只有在立即找到元素时才能工作。
- 将
daddy
设置为局部变量(以防止与全局变量发生冲突) 返回递归调用的结果
:
function find_parent_p(x) {
var daddy = jQuery(x).parent();
if(daddy.attr("tagName").toLowerCase() == 'p') {
return daddy;
} else {
return find_parent_p(daddy);
}
}
注意:你可以只使用jQuery做同样的事情:
var next = $(this).closest('p');
如果您的目标是获取img的父元素p,您可以使用。
$('img').each(function(){
next = $(this).closest('p');
console.log(next,"result");
})
相关文章:
- 控制台返回var不是't定义,但它是
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 这.SOMETHING 总是返回未定义的 - extjs
- React+Meteor:this.ops返回未定义
- "日期“;AJAX请求返回的类型值未定义
- Regex提取URL返回数组的一部分;未定义”;
- 换行符拆分返回“”;未定义”;
- 解析-为什么user.getSessionToken()返回未定义的结果
- Javascript函数返回未定义
- 自定义验证并格式化从数据数据库返回的响应-BEGINNER
- JavaScript-获取数据属性的值返回未定义的值
- Google Sheet自定义函数返回0
- .val()返回未定义的.text返回随机代码
- 为什么innerHTML返回“未定义”
- "这个“;正在返回未定义的
- 函数jquery的未定义返回
- 为什么typeof的数组的数组的未定义值返回为“0”;未定义的“;我的条件不认为是真的
- 如何获取用户's输入并返回我定义的匹配变量的值
- 谷歌地图:函数返回未定义的值在console.log中运行良好
- 在Smarty中定义AJAX返回的格式