Javascript 匿名子函数的返回值
在我的代码中,我调用一个函数并期望返回一个值 var spriteimageload=tryLoadSpriteImage(数据,hrefObj) 我期望Javascript 匿名子函数的返回值,javascript,jquery,Javascript,Jquery,在我的代码中,我调用一个函数并期望返回一个值 var spriteimageload=tryLoadSpriteImage(数据,hrefObj) 我期望var spriteImageLoaded=hrefObj.div。但是它是未定义的。 如何正确返回值?尝试 tryLoadSpriteImage = function(data,hrefObj){ return $(data).each(function(){ if ($(this)[0].nodeNa
var spriteImageLoaded
=hrefObj.div
。但是它是未定义的
。
如何正确返回值?尝试
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;
}
});
}
在jQuery
的回调函数中调用return
,每个
相当于标准for循环的中断。因此,您实际上要做的是迭代数据的每个条目,并在第一个具有节点名“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
}
您能提供一些带有示例HTML的JSFIDLE吗?
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
}