0

ブラウザがハングしてこの関数の最初のforループに巻き込まれる理由がわかりません。arguments.lengthもconsole.logを出力しません。

これは、カラーピッカー自身のIDを渡し、次に変更する他の変数のプロパティを渡すクリック関数です。

$('#colorSelector3').click(function(){
colorPickDynamic('#colorSelector3','h1','color');
});

ブラウザが最初のforループでハングする関数は次のとおりです。

function colorPickDynamic(cp){
    var i,
        j,
        x,
        tag = [],
        colorProperty = [];

    for (x=0, i = 1, j = 2; x <= arguments.length; i+=2, j+=2, x++) {

        tag[x]=arguments[i];
        colorProperty[x]=arguments[j];

        console.log(arguments.length);
        console.log(colorProperty[x]);
    }

    $(cp).ColorPicker({
        color: '#0000ff',
        onShow: function (colpkr) {
            $(colpkr).fadeIn(500);
            return false;
        },
        onHide: function (colpkr) {
            $(colpkr).fadeOut(500);
            return false;
        },
        onChange: function (hsb, hex, rgb) {
            for (j = 2; j < arguments.length; j+=1) {
                $(tag[0]).css(colorProperty[0], '#' + hex);
            }
            $(cp + ' div').css('backgroundColor', '#' + hex);
        }
    });
}

どんな助けでも素晴らしいでしょう!ありがとう

4

1 に答える 1

3

ハングしますか(無限ループなど)?そして、単なるクラッシュではありませんか?

にアクセスしているためarguments[i]、引数は1から始まり、反復ごとに2ずつ増加します。引数に0個または1個の要素が含まれている場合、arguments[1]ロギングが行われる前に、アクセスしようとして最初の反復でクラッシュします。

アクセスするつもりでしたarguments[x]か?

于 2012-09-11T09:15:56.153 に答える