如果声明在功能

时间:2012-06-20 20:48:57

标签: javascript jquery

我正在尝试向我的函数添加if语句,但它无效。 (所有变量都已在我的完整代码中声明。)

这是原始代码:

function processCheckout() {
    //static paypal request arguments
    var pp_settings = {
        cmd: '_cart',
        upload: 1,
        no_note: 0,
        bn: 'JQPayPalShop_ShoppingCart_EC_US',
        tax: 0,
        rm: 2,
        custom: ''
    };

    //copy settings.paypal to pp_settings 
    $.extend(pp_settings, settings.paypal);

    //create form for POST request
    var form = $('<form />');
    form.attr('action', 'https://www.paypal.com/cgi-bin/webscr');
    form.attr('method', 'post');
    form.attr('target', '_blank');

    //add paypal variables
    var arg;
    for (var key in pp_settings) {
        arg = $('<input type="hidden" />');
        arg.attr('name', key);
        arg.attr('value', pp_settings[key]);
        //add to form
        form.append(arg);
    }

    //now process items in cart
    var item_index = 0;
    //properties map for 'cart' to the paypal variables
    var map = {
        name: 'item_name',
        quantity: 'quantity',
        checkout_price: 'amount',
        shipping: 'shipping',
        number: 'item_number',
        handling: 'handling'
    };

    for (var g in cart) {
        //group
        for (var i in cart[g]) {
            //item
            if (i == 'length')
                continue;
            //skip length property
            item_index++;
            //process item
            for (var k in map) {
                arg = $('<input type="hidden" />');
                arg.attr('name', map[k] + '_' + item_index);
                arg.attr('value', cart[g][i][k]);
                form.append(arg);
            }
        }
    }

    //add form to the document
    shop.append(form);
    form.submit();
    //remove form
    shop.remove(form);
}

这是我试图修改的代码:

function processCheckout() {
    if (canBuy = false)
    {
        alert("False");
    }
    else
    {
        //static paypal request arguments
        var pp_settings = {
            cmd: '_cart',
            upload: 1,
            no_note: 0,
            bn: 'JQPayPalShop_ShoppingCart_EC_US',
            tax: 0,
            rm: 2,
            custom: ''
        };

        //copy settings.paypal to pp_settings 
        $.extend(pp_settings, settings.paypal);

        //create form for POST request
        var form = $('<form />');
        form.attr('action', 'https://www.paypal.com/cgi-bin/webscr');
        form.attr('method', 'post');
        form.attr('target', '_blank');

        //add paypal variables
        var arg;
        for (var key in pp_settings) {
            arg = $('<input type="hidden" />');
            arg.attr('name', key);
            arg.attr('value', pp_settings[key]);
            //add to form
            form.append(arg);
        }

        //now process items in cart
        var item_index = 0;
        //properties map for 'cart' to the paypal variables
        var map = {
            name: 'item_name',
            quantity: 'quantity',
            checkout_price: 'amount',
            shipping: 'shipping',
            number: 'item_number',
            handling: 'handling'
        };

        for (var g in cart) {
            //group
            for (var i in cart[g]) {
                //item
                if (i == 'length')
                    continue;
                //skip length property
                item_index++;
                //process item
                for (var k in map) {
                    arg = $('<input type="hidden" />');
                    arg.attr('name', map[k] + '_' + item_index);
                    arg.attr('value', cart[g][i][k]);
                    form.append(arg);
                }
            }
        }

        //add form to the document
        shop.append(form);
        form.submit();
        //remove form
        shop.remove(form);
    }
}

我希望整个功能仅在canBuy变量等于true时才有效,否则alert("False")

5 个答案:

答案 0 :(得分:8)

// WRONG
if (canBuy = false)

// GOOD
if (canBuy == false)

// BETTER
if (!canBuy)

答案 1 :(得分:6)

if语句应使用==(比较)而不是=(作业)

if (canBuy = false)

更改为...

if (canBuy == false)

答案 2 :(得分:3)

if (canBuy = false)更改为if (canBuy == false)

你错过了一个额外的等号。

答案 3 :(得分:2)

if (canBuy = false) 

进行分配,应该==进行比较

if (canBuy == false) 

答案 4 :(得分:2)

假设在canBuy函数可以看到processCheckout的地方==,请将您的初始比较更改为===if (!canBuy) {,或者使用if (canBuy) {或{ {1}}(取决于您喜欢阅读逻辑的方式)。

//Assignment
if (canBuy = false) {...};    //assignment, won't work.

//Coerced comparison
if (canBuy == false) {...}    //this would work

//Non-coerced compparison
if (canBuy === false) {...}   //if canBuy is an actual boolean, this would work

//Also (in the category of "is more readable"...)
if (!canBuy) {      //this would work
    //...
}
if (canBuy) {       //as would this
    //...
}