0

ユーザーアクセスURLでウィンドウの幅を確認したいのですが、ブラウザのサイズが変更された場合は、もう一度確認してください。


Q1。関数を呼び出すだけでは、setcolamt()以前と同じ値resize()は何もcolmat実行されません。理由がわかりません。変更されるのと同じように、すべてのコードを再度プルcommentするcolmat必要があります。

Q2。なぜ3回ポップアップするのですか alert()resize()

任意の提案をいただければ幸いです。

jsfiddle

var colamt=0;
var winwid = $(window).width();
function setcolamt(){        
    if(winwid > 800){
        colamt = 8;
    }
    else{
        colamt = 4;
    }
};
setcolamt();
alert(colamt);

$(window).resize(function(){
    //var colamt=0;
    //var winwid = $(window).width();
    //function setcolamt(){        
        //if(winwid > 800){
        //    colamt = 8;
        //}
        //else{
        //    colamt = 4;
        //}
    //};
    setcolamt();
    alert(colamt);
});

</ p>

4

4 に答える 4

2

に移動var winwid = $(window).width();setcolamt()ます。ただし、alert()チェックする前に削除することに注意してください。多分ハングしました。console.logそれよりも優れています。

于 2012-11-28T03:05:01.857 に答える
1

setcolamt()関数はの値を変更しないため、最初の呼び出し後に幅は更新されませんwinwid

var colamt=0;
var winwid = $(window).width();

function setcolamt(){        
    // Get the new winwid
    winwid = $(window).width();
    if(winwid > 800){
        colamt = 8;
    }
    else{
        colamt = 4;
    }
};

winwid外部で使用する場合を除いてsetcolamt()、グローバルスコープで宣言する必要はありません。代わりに、関数で宣言して使用することができます

function setcolamt(){        
    // declare winwid here with var, not outside.
    // and no need to call $(window).width() outside...
    var winwid = $(window).width();
    if(winwid > 800){
        colamt = 8;
    }
    else{
        colamt = 4;
    }
};

これが更新されたjsfiddleですconsole.log()煩わしい代わりに使用しますalert()

于 2012-11-28T03:04:40.827 に答える
1
  1. var winwid = $(window).width();を置きます。setcolamt();内
  2. サイズ変更は何度もトリガーされるため、アラートの数は気にしないでください。代わりにconsole.log()を使用してください。
于 2012-11-28T03:09:05.373 に答える
0

var winwid = $(window).width();現在書かれているように、一度だけ自分自身を設定します。サイズ変更イベントでは、ウィンドウの更新されたサイズを監視する必要があります。簡単な方法の1つは、を関数に移動することvar winwid = $(window).width()です。もう1つは、.resize()コールバック関数に渡されたイベントから新しい幅を取得することです。

于 2012-11-28T03:05:21.967 に答える