Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可变范围&;事件触发匿名函数_Javascript_Jquery - Fatal编程技术网

Javascript 可变范围&;事件触发匿名函数

Javascript 可变范围&;事件触发匿名函数,javascript,jquery,Javascript,Jquery,我正在通过滚轮创建图像缩放,但在函数之间传递变量时遇到问题 在调用img\u scroll()函数之前,我需要获得要放大和缩小的图像的最小和最大尺寸。要获得尺寸,我需要先等待图像加载 现在我等待图像加载,调用dimensions函数,然后一旦加载了dimensions,我就调用scroll函数。但是现在我很难将变量沿着链传递到scroll函数 zoom = 0.01; $(document).ready(function(){ $("#img_wrapper").imagesLoade

我正在通过滚轮创建图像缩放,但在函数之间传递变量时遇到问题

在调用
img\u scroll()
函数之前,我需要获得要放大和缩小的图像的最小和最大尺寸。要获得尺寸,我需要先等待图像加载

现在我等待图像加载,调用dimensions函数,然后一旦加载了dimensions,我就调用scroll函数。但是现在我很难将变量沿着链传递到scroll函数

zoom = 0.01;

$(document).ready(function(){
    $("#img_wrapper").imagesLoaded(function(){

        getImgSizes();

    });


});

function getMinImgSize() {
    if ($("#img_wrapper img").width() <= $("#img_wrapper img").height()) {
        $("#img_wrapper img").css("width", "100%");
    } else {
        $("#img_wrapper img").css("height", "100%");
    }
    min_width = $("#img_wrapper img").width();
    min_height = $("#img_wrapper img").height();
    return {height: min_height, width: min_width};
}

function getImgSizes() {
    var newImg = new Image();
    var width, height;
    imgSrc = $("#img_wrapper img")[0].src;

    minDimensions = getMinImgSize();

    newImg.onload = function(minDimensions) { //incorect way to pass varaible to anonymous function
        originalHeight = newImg.height;
        originalWidth = newImg.width;
        maxDimensions = {height: originalHeight, width: originalWidth};
        img_scroll(minDimensions, maxDimensions);
    }

    newImg.src = imgSrc; // this must be done AFTER setting onload

}

function img_scroll(minDimensions, maxDimensions){
    var minDimensions = minDimensions;
    var maxDimensions = maxDimensions;
    $('#img_wrapper').mousewheel(function(event, delta, deltaX, deltaY) {
        console.log(delta, deltaX, deltaY);
        if (deltaY < 0) {
            if ($("#img_wrapper img").width < maxDimensions.width) {
                $("#img_wrapper img").width($("#img_wrapper img").width()*(1+zoom));
                $("#img_wrapper img").height($("#img_wrapper img").height()*(1+zoom));  
            } else {
                                    $("#img_wrapper img").width(maxDimensions.width);
                                    $("#img_wrapper img").height(maxDimensions.height);
                                }
        } else {
            if ($("#img_wrapper img").width > minDimensions.width) {
                $("#img_wrapper img").width($("#img_wrapper img").width()*(1-zoom));
                $("#img_wrapper img").height($("#img_wrapper img").height()*(1-zoom));  
            } else {
                            $("#img_wrapper img").width(minDimensions.width);
                            $("#img_wrapper img").height(minDimensions.height);
                        }
        }
    });
}
zoom=0.01;
$(文档).ready(函数(){
$(“#img_包装器”).imagesLoaded(函数(){
getImgSizes();
});
});
函数getMinImgSize(){
if($(“#img_包装img”).width()minDimensions.width){
$(“#img#u包装img”).width($(“#img#u包装img”).width()*(1-zoom));
$(“#img#u wrapper img”).height($(“#img#u wrapper img”).height()*(1-zoom));
}否则{
$(“#img#u包装img”).width(minDimensions.width);
$(“#img#u包装器img”).高度(minDimensions.height);
}
}
});
}
关于如何在链中传递最小和最大维度变量的任何帮助都将非常有用。

通过Javascript的工作方式,
minDimensions
可用于匿名函数,而无需显式传递。这应该起作用:

function getImgSizes() {
    var newImg = new Image();
    var width, height;
    var imgSrc = $("#img_wrapper img")[0].src;

    var minDimensions = getMinImgSize();

    newImg.onload = function() {
        var originalHeight = newImg.height;
        var originalWidth = newImg.width;
        var maxDimensions = {height: originalHeight, width: originalWidth};
        img_scroll(minDimensions, maxDimensions);
    }

    newImg.src = imgSrc; // this must be done AFTER setting onload

}
编辑:使用
var
阻止全局变量