2011-12-19 6 views
0

私はjavascriptを初めて使っています。私はこのページで作業しており、質問された各質問の変数を増やしたいと思います。私はなぜそれが正常に動作していないのか混乱している、私は何時間も別のものを試してみた。変数を0に設定しようとしたときに、onclick関数が実行されるたびに値が増加します。

http://www.sprayfoamsys.com/cmsdev/index.php?page=rig-constructor

function clearVar(){ 
var sec1=0; 
document.getElementById('sec1text').innerHTML = sec1; 
var sec2=0; 
document.getElementById('sec2text').innerHTML = sec2; 
var sec3=0; 
document.getElementById('sec3text').innerHTML = sec3; 
} 

function sec1Var(){ 
sec1++; 
document.getElementById('sec1text').innerHTML = sec1; 
alert(sec1); 
} 

function sec2Var(){ 
sec2++; 
document.getElementById('sec2text').innerHTML = sec2; 
alert(sec2); 
} 

function sec3Var(){ 
sec3++; 
document.getElementById('sec3text').innerHTML = sec3; 
alert(sec3); 
} 
+0

私は私が持っている唯一の理由を追加します「のdocument.getElementById( 『sec1text』)をinnerHTMLの= SEC1;。」私のコードをテストすることです – BrettAdamsGA

+0

私はあなたのコードをクリックして表示されません。 – jfriend00

答えて

0

あなたはローカル変数を宣言しているためです。グローバル変数を宣言する必要があります。

var sec1=0; 
var sec2=0; 
var sec3=0; 

function clearVar(){ 
    sec1=0; 
    sec2=0; 
    sec3=0; 
} 

function sec1Var(){ 
    sec1++; 
    alert(sec1); 
} 
+0

助けてくれてありがとう、私の問題は今修正されました。 – BrettAdamsGA

0

コンソールは言う:

Uncaught ReferenceError: sec1 is not defined

あなたが実際にsec1などを宣言する必要があります。JavaScriptで

var sec1 = 0, 
    sec2 = 0, 
    sec3 = 0; 

function clearVar(){ 
    sec1 = 0; // update the declared variable to 0; don't declare it here 
       // because it's then only accessible within this function 

    // ... rest of code ... 
+0

私はそれが何か単純でなければならないことを知っていました、私の問題を解決した助けをありがとう。 – BrettAdamsGA

0

変数は、関数のスコープを持ちます。基本的に、これは、その関数の外から関数内で宣言された変数にアクセスすることができないことを意味します。したがって、変数をclearVarに宣言すると、他の場所から変数にアクセスすることはできなくなります。関数の宣言の前に置くだけです。

+0

答えを出すのではなく、問題を説明してくれてありがとう。 – BrettAdamsGA

+0

@BrettAdamsGAよろしくお願いします! –

0

カウンタ変数には、1回の呼び出しから次の呼び出しまで存続できるスコープが必要です。したがって、その値は維持されます。関数が呼び出されるたびに破棄され再作成されるローカル変数を使用していました。ここで

は、すべてのボタンの押しに増加CNTRの作業例です:http://jsfiddle.net/jfriend00/DSfXb/

<button id="test">Click Me</button><br> 
<div id="output">0</div> 

// global variable 
var cntr = 0; 
document.getElementById("test").onclick = function() { 
    cntr++; 
    document.getElementById("output").innerHTML = cntr; 
}; 
関連する問題