2016-04-29 88 views
0

我已经制作了这个脚本,但有一个问题。用javascript增加一个变量

当我点击addbutton时,控制台日志上的变量每次点击都会收到更新(1,2,3,4)。

但是var fieldHTML仍然是1,为什么?

var a = 1; 

$(addButton).click(function(){ //Once add button is clicked 

a++; 

console.log(a); 


}); 

var fieldHTML = a; 
+0

因为'了'指向一个新的价值,但是'fieldHTML'仍然指向旧的。 – gurvinder372

+1

[_始终传递值(即使该值是一个引用...)_](http://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-按值语言) – Rayon

+0

^除通过引用传递的对象和数组外。 –

回答

4
由于

var fieldHTML = a;拷贝afieldHTML值。

它不创建参考。

更改值a(在设置值fieldHTML后)不会更改fieldHTML的值。

+0

我不明白,你可以做一个小例子? –

+0

@MaurizioBenini - 一个什么样的例子?我只是描述你提供的例子。 – Quentin

+0

有一种方法可以用增量值更新fieldHTML? –

-1

var addButton = $("#btn"); 
 
var viewButton = $("#btn-2"); 
 
var setButton = $("#btn-3"); 
 
var a = 1; 
 
var fieldHTML = a; // on load, addign a value to fieldHTML variable | fieldHTML = 1 
 

 
$(addButton).click(function() { //Inc by 1 
 
    a++; 
 
    console.log('a : '+a); 
 
}); 
 

 
$(viewButton).click(function() { //Show fieldHTML value in console 
 
    console.log('fieldHTML : '+fieldHTML); 
 
}); 
 

 
$(setButton).click(function() { // reassign a value to the fieldHTML variable | on click event 
 
    fieldHTML = a; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<button id='btn'>Inc a</button> 
 
<button id='btn-3'>Set fieldHTML</button> 
 
<button id='btn-2'>View fieldHTML</button>

+0

您编写它的方式,此代码'var fieldHTML = a;'在窗口加载事件上执行。在增加'a'值之后,您必须**以某种方式将其值重新分配给'fieldHTML'。 – Robert

0

你需要一个ID或类适用于选择,它包装成文件准备好,还通过“一”的功能,然后可以操纵fieldHTML新价值值。查看我使用警报的片段注释来演示增加的计数而不是console.log - 仅仅是因为它在代码片段中。

$(document).ready(function(){ 
 
    var a = 1; 
 
     $('#addButton').click(function(){ //Once add button is clicked 
 
     a++; 
 
     alert("a = " + a); 
 
     update_fieldHTML(a); 
 
     }); 
 
    }) 
 

 
function update_fieldHTML(value){ 
 
var fieldHTML = value; 
 
    alert("fieldHTML =" + fieldHTML); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="addButton">Click Me</button>

-1

var addButton = $("#btn"); 
 
var viewButton = $("#btn-2"); 
 
var a = 1; 
 
var fieldHTML = a; 
 

 
$(addButton).click(function() { 
 
    fieldHTML = increment(); 
 
    alert('a : ' + a); 
 
}); 
 

 
$(viewButton).click(function() { 
 
    alert('fieldHTML : '+fieldHTML); 
 
}); 
 

 
function increment(){ 
 
    return ++a; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<button id='btn'>Inc a</button> 
 
<button id='btn-2'>View fieldHTML</button>