局部全局变量问题 - javascript
local global variable issue - javascript
在 js GetTotal() 函数中,我有一个确认框,后跟一个 IF 语句,它可以 (1) 计算新的总数(如果用户选择 'ok');或 (2) 将变量 'input1' 和 'input2' 重新加载到文本输入框中(如果用户选择 'cancel')。当重新加载 'input1' 和 'input2' 时,它们总是重置为 'input1' (5555) 和 'input2' (666) 的原始全局值,即使用户之前更改了这些变量。
我想用最近输入的变量(这将与显示的总数一致)重新加载 'input1' 和 'input2' 的值,而不是总是恢复到原始全局值对于 'input1' (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)"/>
您需要在最终用户输入值时更新您的变量。可能会产生这样的效果:
$('#input1').on('change blur', function() {
input1 = Number(this.value);
});
我认为您需要做的就是将 input1
和 input2
设置为 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;
}
});
在 js GetTotal() 函数中,我有一个确认框,后跟一个 IF 语句,它可以 (1) 计算新的总数(如果用户选择 'ok');或 (2) 将变量 'input1' 和 'input2' 重新加载到文本输入框中(如果用户选择 'cancel')。当重新加载 'input1' 和 'input2' 时,它们总是重置为 'input1' (5555) 和 'input2' (666) 的原始全局值,即使用户之前更改了这些变量。
我想用最近输入的变量(这将与显示的总数一致)重新加载 'input1' 和 'input2' 的值,而不是总是恢复到原始全局值对于 'input1' (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)"/>
您需要在最终用户输入值时更新您的变量。可能会产生这样的效果:
$('#input1').on('change blur', function() {
input1 = Number(this.value);
});
我认为您需要做的就是将 input1
和 input2
设置为 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;
}
});