我已经制作了这个脚本,但有一个问题。用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;
我已经制作了这个脚本,但有一个问题。用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;
var fieldHTML = a;
拷贝a
到fieldHTML
值。
它不创建参考。
更改值a
(在设置值fieldHTML
后)不会更改fieldHTML
的值。
我不明白,你可以做一个小例子? –
@MaurizioBenini - 一个什么样的例子?我只是描述你提供的例子。 – Quentin
有一种方法可以用增量值更新fieldHTML? –
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>
您编写它的方式,此代码'var fieldHTML = a;'在窗口加载事件上执行。在增加'a'值之后,您必须**以某种方式将其值重新分配给'fieldHTML'。 – Robert
你需要一个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>
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>
因为'了'指向一个新的价值,但是'fieldHTML'仍然指向旧的。 – gurvinder372
[_始终传递值(即使该值是一个引用...)_](http://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-按值语言) – Rayon
^除通过引用传递的对象和数组外。 –