0

我不知道为什么浏览器会挂起并在此函数的第一个 for 循环中被捕获,arguments.length 也不打印 console.log。

这是传递颜色选择器自己的 id 的 click 函数,然后是要更改的变量其他属性:

$('#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。如果 arguments 包含零个或一个元素,它将在第一次迭代时崩溃arguments[1],在任何日志记录完成之前尝试访问。

你打算访问arguments[x]吗?

于 2012-09-11T09:15:56.153 回答