方法(reSize)不返回值js

时间:2014-01-30 12:49:16

标签: javascript jquery

我的脚本是

function test ()
    {
        this.reSize = function(iWidth, iHeight)
        {
            var iSize = new Array();
            var self = this;
            if (iWidth > 600 || iHeight > 600)
            {
                iWidth = Math.ceil(iWidth / 2);
                iHeight = Math.ceil(iHeight / 2);
                console.log(iWidth + ' resize ' + iHeight);
                self.reSize((iWidth / 2), (iHeight / 2));
            }
            else
            {
                iSize = {w:Math.ceil(iWidth), h:Math.ceil(iHeight)};
                console.log(iSize.w + ' tumbs ' + iSize.h);
                return iSize;
            }
        }// end reSize

        this.createDivImage = function()
        {
            var self = this;
            var iSizeTumbs = {};
            $('img.img-chat').unbind('click').click(function() {
                var src = $(this).attr('src');
                var sHtmlDiv = '';
                sHtmlDiv += '<div class="dialogs-img">';
                sHtmlDiv += '<div class="dialogs-img-close"><a href="#" class="circle ">x</a></div>';
                sHtmlDiv += '<div class="body-img">';
                sHtmlDiv += '<img src="' + src + '" class="body-img-zoom">';
                sHtmlDiv += '</div>';
                sHtmlDiv += '</div>';

                $('<img/>').attr('src', src).load(function()
                {
                    iSize = {w: this.width, h: this.height};
                    iSizeTumbs = self.reSize(iSize.w, iSize.h);
                    console.log(iSizeTumbs);
                });
            });
        }

    }

    var oTest = new test();
    oTest.createDivImage();

http://jsfiddle.net/e4Hx5/5/

萤火:

  

800调整大小600 / e4Hx5 / 5 / show /(wiersz 31)

     

400 tumbs 300 / e4Hx5 / 5 / show /(wiersz 37)

     

undefined / e4Hx5 / 5 / show /(wiersz 60)

2 个答案:

答案 0 :(得分:1)

您的问题是if方法中的一个执行路径( reSize 的第一种情况)没有返回任何内容。

您还需要return来自该路径的内容。

所以你需要return self.reSize((iWidth / 2), (iHeight / 2));

以下是您的代码更新:http://jsfiddle.net/gaby/e4Hx5/6/

答案 1 :(得分:0)

您需要返回一个值,而不仅仅是进行递归调用;

     if (iWidth > 600 || iHeight > 600) {
        iWidth = Math.ceil(iWidth / 2);
        iHeight = Math.ceil(iHeight / 2);
        console.log(iWidth + ' resize ' + iHeight);
        return self.reSize((iWidth / 2), (iHeight / 2));
    }

此外,在您的代码中,您将iWidthiHeight分成两次,是否确定它是正确的行为?