本地全局变量问题 - javascript

时间:2016-04-26 21:46:17

标签: javascript jquery global-variables local-variables

在js GetTotal()函数中,我有一个确认框,后跟一个IF语句,或者(1)计算新的总数(如果用户选择' ok');或(2)重新加载变量" input1'和'输入2'进入文本输入框(如果用户选择'取消')。当'输入1'和'输入2'重新加载,他们总是重置为" input1'的原始全局值(5555)和' input2' (666)即使用户先前已经改变了这些变量。

我想要输入' input1'和'输入2'重新加载最近输入的变量(与显示的总数一致),而不是总是恢复到输入1'的原始全局值。 (5555)和' input2' (666)。我认为这与本地和全球有关,但我无法弄明白。 V感激任何建议。麦克风。

  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap3-dialog/1.35.1/js/bootstrap-dialog.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
    </head>

<script>

var input1 = 5555;
var input2 = 666;

$(document).ready(function() {
  document.getElementById("input1").value = input1;
  document.getElementById("input2").value = input2;
  GetFirstTotal();  
});




function GetFirstTotal() {
    var total = 0;
    $('input[type=text]').each(function(index, value) {
      total += parseInt($(value).val() || 0);
    });

    $("#chkTotal").html(total);
}

function GetTotal() {
total = 0
  BootstrapDialog.confirm('Are you sure you want to do this?', function(result){
   if(result) {
         $('input[type=text]').each(function(index, value) {
             total += parseInt($(value).val() || 0);
         });
         $("#chkTotal").html(total);
   }else{document.getElementById("input1").value = input1;
  document.getElementById("input2").value = input2;}
});
}

</script>

TOTAL:
<div id="chkTotal"></div>
<br>
<input type="text" name="input1" id="input1"/>
<input type="button" value="Change X" onclick="GetTotal(this)"/>
<br>
<br>
<input type="text" name="input2" id="input2"/>
<input type="button" value="Change Y" onclick="GetTotal(this)"/> 

2 个答案:

答案 0 :(得分:0)

当最终用户输入值时,您需要更新变量。这可能有效:

$('#input1').on('change blur', function() {
    input1 = Number(this.value);
});

答案 1 :(得分:0)

我认为您需要做的就是将input1input2设置为GetTotal中相应文本框的值:

function GetTotal() {
  total = 0
  BootstrapDialog.confirm('Are you sure you want to do this?', function(result){
  if(result) {
    input1 = parseInt($('#input1').val() || 0, 10);
    input2 = parseInt($('#input2').val() || 0, 10);
    // note that since you only have two fields, it's just as easy to write
    total = input1 + input2;
    //$('input[type=text]').each(function(index, value) {
    //    total += parseInt($(value).val() || 0);
    //});
    $("#chkTotal").html(total);
  }else{
    document.getElementById("input1").value = input1;
    document.getElementById("input2").value = input2;
  }
});