在我的代码中,我调用一个函数并期望返回一个值。
var spriteImageLoaded = tryLoadSpriteImage(data,hrefObj);
tryLoadSpriteImage = function(data,hrefObj){
$(data).each(function(){
if ($(this)[0].nodeName == "STYLE")
{
var styleTxt = $(this)[0].innerHTML
//console.log(styleTxt);
var urlImage = styleTxt.match(/\((.*)\)/g)[0].replace('(','').replace(')','');
//console.log("url image loaded:"+urlImage);
hrefDivInsertImageUrl(hrefObj, urlImage);
saveImage(hrefObj.href, urlImage);
return hrefObj.div;
}
});
}
我预计var spriteImageLoaded
= hrefObj.div
。但相反它是undefined
。
如何正确返回值?
答案 0 :(得分:0)
试
tryLoadSpriteImage = function(data,hrefObj){
return $(data).each(function(){
if ($(this)[0].nodeName == "STYLE")
{
var styleTxt = $(this)[0].innerHTML
//console.log(styleTxt);
var urlImage = styleTxt.match(/\((.*)\)/g)[0].replace('(','').replace(')','');
//console.log("url image loaded:"+urlImage);
hrefDivInsertImageUrl(hrefObj, urlImage);
saveImage(hrefObj.href, urlImage);
return hrefObj.div;
}
});
}
答案 1 :(得分:0)
在jQuery return
的回调函数中调用each
等同于循环标准的中断。所以你实际做的是迭代data
的每个条目,并在第一个具有节点名称“STYLE”之后断开,而不是从你的函数的角度返回任何东西。
如果您想返回hrefObj.div
,请使用:
tryLoadSpriteImage = function(data,hrefObj){
$(data).each(function(){
if ($(this)[0].nodeName == "STYLE")
{
var styleTxt = $(this)[0].innerHTML
//console.log(styleTxt);
var urlImage = styleTxt.match(/\((.*)\)/g)[0].replace('(','').replace(')','');
//console.log("url image loaded:"+urlImage);
hrefDivInsertImageUrl(hrefObj, urlImage);
saveImage(hrefObj.href, urlImage);
return; //exits the each loop
}
});
return hrefObj.div; //returns the div
}