从匿名子函数返回值

时间:2013-11-26 10:00:51

标签: javascript jquery

在我的代码中,我调用一个函数并期望返回一个值。

  

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。 如何正确返回值?

2 个答案:

答案 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
}
相关问题