2016-04-29 87 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>