javascript - 将状态传递给调整大小函数

标签 javascript jquery

我正在尝试创建一个 Demo -
1.(登陆)检查浏览器大小>更改多边形大小
2. 单击 按钮 > 更改多边形大小(较小)
3. 调整浏览器大小 > 更改多边形大小
4. 调整浏览器大小 > 检查之前是否已单击按钮至较小模式 > 将多边形大小更改为较小


我陷入了 4。我不知道如何将调整大小之前的状态传递到调整大小之后。它会再次计算。

如有任何建议,我们将不胜感激。

演示

$(function(){
var adivide=0;
var winwid = $(window).width();
function setadivide(){  
    winwid = $(window).width(); 
    if(winwid > 800){
        adivide = 8;
    }
    else{
        adivide = 4;
    }
    console.log(adivide);
};
setadivide();

var awidth;
function acal(){
    awidth = parseInt( winwid / adivide);
};
acal();
function setawidth(){
    $('.a').css({width: awidth, height: awidth});
};
setawidth();

//****** button
//set btn visibility
function btnvis(){
    switch(adivide){
        case 4:
            $('.plus').show();
            $('.minus').hide();
        break;
        case 8:
            $('.plus').show();
            $('.minus').hide();
        break;
    }
};
btnvis();
//click btn update adivide and set btn visibility
function btnclick(){
    $('.plus').click(function(){
        switch(adivide){
            case 4:
                adivide = adivide -2;
                console.log(adivide);
                acal();
                setawidth();
                $('.plus').hide();
                $('.minus').show();
            break;
            case 8:
                adivide = adivide - 2;
                console.log(adivide);
                acal();
                setawidth();
                $('.plus').hide();
                $('.minus').show();
            break;
        }
    });
    $('.minus').click(function(){
        switch(adivide){
            case 2:
                adivide = adivide + 2;
                console.log(adivide);
                acal();
                setawidth();
                $('.plus').show();
                $('.minus').hide();
            break;
            case 6:
                adivide = adivide + 2;
                console.log(adivide);
                acal();
                setawidth();
                $('.plus').show();
                $('.minus').hide();
            break;
        }
    });
};
btnclick();
//end button ******
$(window).resize(function(){
    setadivide();
    acal();
    setawidth();
    //****** button
    btnvis();
    //end button ******
});
});

最佳答案

(编辑答案)

修改您的 setadivide 函数以考虑当前的 adivide 值(即当前状态):

function setadivide(){    
    winwid = $(window).width();    
    if(winwid > 800){
        if (adivide == 2)
           adivide = 6;
        else if (adivide != 6)
           adivide = 8;
    }
    else{
        if (adivide == 6)
           adivide = 2;
        else if (adivide != 2)
           adivide = 4;
    }
    console.log(adivide);
};

Modified demo

关于javascript - 将状态传递给调整大小函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13640701/

相关文章:

javascript - Ajax 请求不断翻倍

jquery - MVC - ClientValidationEnabled = true,但仍然有回发,毁了我的 jQuery

javascript - 使用 getElementsByClassName 在特定元素中设置文本

javascript - Angular JS。如何公开查看应用程序级常量?

jquery - 简单的 Jquery 悬停放大

javascript - 如何使用 Append Jquery

php - CSV 文件无法在 IE 中打开

javascript - 制作一个添加到链接的表单

JavaScript/jQuery : get selected text's container

javascript - chessboard.js 中只允许移动白色棋子