簡體   English   中英

從全局范圍刪除var

[英]remove var from global scope

在此示例中,我有兩個操作:

  1. 當您添加用戶數量時-它將自動由輸入中的價格加上總金額來計算

  2. 如果您已經添加了用戶數量>已計算總金額>如果單擊EUR-輸入總金額,則總金額將轉換為歐元。

因此,一切正常-但我不喜歡“ usesQuantity”具有全局范圍! 任何想法如何使其本地化並保存工作版本http://jsfiddle.net/gb2447jd/5/

嘗試過類似的東西:

$('#user-quantity').keyup(function(){
    var userQuantity = parseInt($(this).val());
    if( userQuantity >=1 && userQuantity <=200){
      valid(userQuantity);
    } else {
      $('#total-sum').val("error");
    }
  });


  $('#usd').on('click', function(){
    $('#eur').removeClass('greenChacked');
    $(this).addClass('greenChacked');
    valid(userQuantity);
  });
  $('#eur').on('click', function(){
    $('#usd').removeClass('greenChacked');
    $(this).addClass('greenChacked');
    valid(userQuantity);
  });
  $('#usd').trigger('click');

  function valid(userQuantity){
    if( $('#usd').hasClass('greenChacked') ){
      var usdCurr = userQuantity * 10 + 'doll';
      $('#total-sum').val(usdCurr);
    }
    if( $('#eur').hasClass('greenChacked') ){
      var eurCurr = userQuantity * 5 + 'eur';
      $('#total-sum').val(eurCurr);
    }
  }

在函數內定義變量(userQuantity)。 無需全局作用域,就可以通過關閉其他函數和回調來使用它。 看到這個新的jsFiddle

新代碼的開頭如下所示:

$(document).ready(function () {
    var userQuantity;
    $('#user-quantity').keyup(function () {
        userQuantity = parseInt($(this).val());
        if (userQuantity >= 1 && userQuantity <= 200) {
            setCurrency();
        } else {
            $('#total-sum').val("error");
        }
    });

您可以將代碼包裝在立即調用的函數中

(function () {
    var userQuantity;

    $(document).ready(function () {
        //rest of your code 
    };
}());

更多信息在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM