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

A'は、新しい値を指しているが、 'fieldHTML'はまだ古いものを指している'ので。 – gurvinder372

+1

[_Itは常にその値が参照値であっても...)_](http://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-値渡し言語) – Rayon

+0

^参照渡しのオブジェクトと配列は除きます。 –

答えて

4

var fieldHTML = a;ため、コピーfieldHTMLからaの値。

参照を作成しません。

の値を変更すると(fieldHTMLの値を設定した後)、fieldHTMLの値は変更されません。あなたは、セレクタにIDやクラスを適用する文書準備にそれをラップし、また、その後fieldHTMLを操作できる機能に「A」の新しい値を渡す必要が

+0

私は理解していない、あなたは少しの例を行うことができますか? –

+0

@MaurizioBenini - 何の一例ですか?私はあなたが提供した例が何をしているかを説明しています。 – Quentin

+0

フィールドHTMLを増分値で更新する方法がありますか? –

-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

値。スニペットノートでは、スニペット内にあるため、警告を使用して、増やしたカウントをコンソールよりも実証することを確認しました。

$(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>

関連する問題