【问题标题】:Trying to set a variable as 0 and increase it with every onclick function execution尝试将变量设置为 0 并在每次执行 onclick 函数时增加它
【发布时间】:2011-12-19 17:29:00
【问题描述】:

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

【问题讨论】:

  • 我会补充说我拥有“document.getElementById('sec1text').innerHTML = sec1;”的唯一原因是为了测试我的代码

标签: javascript variables increment


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的帮助,现在解决了我的问题。
【解决方案2】:

控制台说:

Uncaught ReferenceError: sec1 is not defined

您必须实际声明 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 ...

【讨论】:

  • 我知道它必须是一些简单的东西,感谢您解决我的问题的帮助。
【解决方案3】:

JavaScript 中的变量的作用域是函数。基本上,这意味着您不能从函数外部访问函数内声明的变量。因此,如果您在clearVar 中声明变量,您将无法从其他任何地方访问它们。只需将它们放在函数声明之前。

【讨论】:

  • 感谢您将问题解释出来,而不是仅仅给出答案。
【解决方案4】:

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

这是一个在每次按下按钮时增加 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;
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-20
    • 2012-05-31
    • 2023-04-01
    • 1970-01-01
    • 2023-03-11
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多