我的脚本是
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();
萤火:
800调整大小600 / e4Hx5 / 5 / show /(wiersz 31)
400 tumbs 300 / e4Hx5 / 5 / show /(wiersz 37)
undefined / e4Hx5 / 5 / show /(wiersz 60)
答案 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));
}
此外,在您的代码中,您将iWidth
和iHeight
分成两次,是否确定它是正确的行为?