2012-06-20 2 views
4

Я пытаюсь добавить инструкцию 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").

+0

Рассмотрите возможность использования валидатора кода, например http://jshint.com/ –

+0

Хороший совет, спасибо! – larin555

ответ

8
// WRONG 
if (canBuy = false) 

// GOOD 
if (canBuy == false) 

// BETTER 
if (!canBuy) 
+1

@AlexisPigeon, я бы даже не сказал «ХОРОШО» там: P –

+0

@XyanEwing Но это не так НЕПРАВИЛЬНО, как НЕПРАВИЛЬНО :) –

+1

@AlexisPigeon, Ха-ха, ладно, ты меня туда нашел :) –

3

Изменения if (canBuy = false) в if (canBuy == false)

Вы упускаете дополнительный знак равенства.

6

Новый if заявление следует использовать == (сравнение) вместо = (назначения)

if (canBuy = false) 

Изменение к ...

if (canBuy == false) 
2
if (canBuy = false) 

делает ассигнование, это Шоуда быть == для сравнения

if (canBuy == false) 
2

Предполагая canBuy объявлена ​​где-то, что функция processCheckout может увидеть его, изменить первоначальное сравнение с == или === или идти с if (!canBuy) { или if (canBuy) { (в зависимости от того, как вам нравится ваша логика для чтения).

//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 
    //... 
} 
Смежные вопросы