Javascript 无法从名为onclick的函数中获取要传递的变量

Javascript 无法从名为onclick的函数中获取要传递的变量,javascript,function,variables,arguments,Javascript,Function,Variables,Arguments,我正在调用一个函数onclicksecVar(sec1)应该通过下面的脚本运行它,但它似乎没有这样做,有人能告诉我我做错了什么吗。我是javascript新手,对脚本编写只有一点经验,而这段代码似乎做得越来越少 <script type="text/javascript"> var sec1=0; var sec2=0; var sec3=0; function secVar(){ if(sec1

我正在调用一个函数onclick
secVar(sec1)应该通过下面的脚本运行它,但它似乎没有这样做,有人能告诉我我做错了什么吗。我是javascript新手,对脚本编写只有一点经验,而这段代码似乎做得越来越少

<script type="text/javascript">
        var sec1=0;
        var sec2=0;
        var sec3=0;
        function secVar(){
            if(sec1) {
                sec1++;
                document.getElementById('sec1text').innerHTML = sec1;
            }
            if(sec2) {
                sec2++;
                document.getElementById('sec2text').innerHTML = sec2;
            }
            if(sec3) {
                sec3++;
                document.getElementById('sec3text').innerHTML = sec3;
            }
        }

        function largestVar(){
                if (sec1 >= sec2 && sec1 >= sec3) {
                    //a
                    document.getElementById('rig').innerHTML = 'Test1';
                } else if (sec2 >= sec1 && sec2 >= sec3) {
                    //b
                    document.getElementById('rig').innerHTML = 'Test2';
                } else {
                    //c
                    document.getElementById('rig').innerHTML = 'Test3';
                }
            }
    </script>

如果有人能向我解释我做错了什么,我将不胜感激。

在这个实现中,您的计数器都不会增加


运行secVar()时,所有计数器都为零。它们从不递增,因为它们从零开始。

在此实现中,您的任何计数器都不会递增


运行secVar()时,所有计数器都为零。它们从不增加,因为它们从零开始。

我想很难判断你的意图是什么。如果您试图做的是查看sec1、2和3当前是真是假(0或1),那么Sparticus是正确的。因为它们目前是错误的,所以代码永远不会像Sparticus正确指出的那样做任何事情

然而,我不相信你真的想这么做。看起来您要检查的条件是您是否尝试递增sec1、2或3。换言之,“如果您将sec1传递给我,请增加它并更新一段HTML”

但变量不是这样工作的。当你说
secVar(sec1)
你实际上说的是“secVar(0)”。我认为这不是你的意图

所以,如果我错了,那是在浪费我的时间,但因为我已经在努力,让我们假装我是对的:

secVar需要能够接受一个参数,但现在您已经声明它为void。将其更改为接受参数是第一步:

函数secVar(param){…}

但这仍然没有任何作用。因为当您仍然使用现有语法传递它“0”时。您需要传递一些可以检查的内容,如字符串:

secVar('sec1')

执行此操作时,现在可以更新条件以检查传递的字符串

if(param=='sec1'){…}

这是一把小提琴:

注意事项:

  • fiddle包含jQuery,只是为了在按钮上轻松绑定暴力事件。这只是一个例子。您不需要jQuery;按你的意愿绑定你的事件
  • 它目前并没有使用最大值函数做任何事情,即使代码还在处理中

    • 我想很难说你的意图是什么。如果您试图做的是查看sec1、2和3当前是真是假(0或1),那么Sparticus是正确的。因为它们目前是错误的,所以代码永远不会像Sparticus正确指出的那样做任何事情

      然而,我不相信你真的想这么做。看起来您要检查的条件是您是否尝试递增sec1、2或3。换言之,“如果您将sec1传递给我,请增加它并更新一段HTML”

      但变量不是这样工作的。当你说
      secVar(sec1)
      你实际上说的是“secVar(0)”。我认为这不是你的意图

      所以,如果我错了,那是在浪费我的时间,但因为我已经在努力,让我们假装我是对的:

      secVar需要能够接受一个参数,但现在您已经声明它为void。将其更改为接受参数是第一步:

      函数secVar(param){…}

      但这仍然没有任何作用。因为当您仍然使用现有语法传递它“0”时。您需要传递一些可以检查的内容,如字符串:

      secVar('sec1')

      执行此操作时,现在可以更新条件以检查传递的字符串

      if(param=='sec1'){…}

      这是一把小提琴:

      注意事项:

      • fiddle包含jQuery,只是为了在按钮上轻松绑定暴力事件。这只是一个例子。您不需要jQuery;按你的意愿绑定你的事件
      • 它目前并没有使用最大值函数做任何事情,即使代码还在处理中

      这正是我想要做的,你的JSFIDLE帮了我大忙,很抱歉我很难解释我的问题。非常感谢,这就是我想要做的,你的JSFIDLE,帮了我很多,很抱歉我很难解释我的问题。非常感谢,
      <script type="text/javascript">
          var sec1=0;
          var sec2=0;
          var sec3=0;
      
          function sec1Var(){
          sec1++;
          document.getElementById('sec1text').innerHTML = sec1;
          }
      
          function sec2Var(){
          sec2++;
          document.getElementById('sec2text').innerHTML = sec2;
          }
      
          function sec3Var(){
          sec3++;
          document.getElementById('sec3text').innerHTML = sec3;
          }</script>