尝试将变量设置为0并在每次onclick函数执行时增加它

时间:2011-12-19 17:29:00

标签: javascript variables increment

我是javascript的新手,但现在是。我正在这个页面上工作,我想让它为每个问题增加变量。我很困惑为什么它不能正常工作,我已经尝试了几个小时不同的事情。

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);
}

4 个答案:

答案 0 :(得分:0)

这是因为你已经声明了局部变量。您需要声明全局变量。

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

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

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

答案 1 :(得分:0)

控制台说:

  

未捕获的ReferenceError:未定义sec1

您必须实际声明sec1等:

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 ...

答案 2 :(得分:0)

JavaScript中的变量范围限定为函数。基本上,这意味着您无法从该函数外部访问函数内声明的变量。因此,如果您在clearVar中声明变量,则无法从其他任何位置访问它们。只需将它们放在函数声明之前。

答案 3 :(得分:0)

您的计数器变量必须具有允许它们从一次调用到下一次调用的范围,以便保持其值。您正在使用每次调用函数时销毁并重新创建的局部变量。

以下是按下每个按钮时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;
};