Javascript函数之外的变量?

iam*_*kie 6 javascript jquery

1| <script type="text/javascript">
2|    function more() {
3|          $("#innerSub2").animate({ scrollTop: "+=240px" },1000);
4|          var count = 1;
5|          document.getElementById("dot" +count).style.color="#c7c9e9";
6|          var count = count + 1;
7|          document.getElementById("dot" +count).style.color="#6464c1";
8|        }
9|     </script>
Run Code Online (Sandbox Code Playgroud)

Helo,我对javascript很新.很抱歉,如果这是一个愚蠢的问题.
在第一次单击事件时,变量工作,因为我需要它(第5行,计数= 1)(第7行,计数= 2)
但在第二次单击事件我需要(第5行,计数= 2)(第7行,计数= 3)但是你可以看到它用第4行重置为1.
所以问题是,我怎么能声明| var count = 1; | 函数more()之外所以它不会重置我的变量?或者如果有任何其他方法可以做到这一点..
如果有一种方法可以阻止变量计数超过3,请分享
谢谢

ElH*_*ker 5

您可以在函数外定义变量,这样就不会将其删除,这样您的变量的作用域将是全局的,认为很多全局变量不是一个好习惯,您可以了解有关作用域和javascript / jquery的更多信息本书的基础知识http://jqfundamentals.com/book/index.html#example-2.44

<script type="text/javascript">
   var count = 1;
   function more() {
         $("#innerSub2").animate({ scrollTop: "+=240px" },1000);          
         document.getElementById("dot" +count).style.color="#c7c9e9";
         count = count + 1; //removed the var word.
         document.getElementById("dot" +count).style.color="#6464c1";
       }
</script>
Run Code Online (Sandbox Code Playgroud)

  • 最好将代码包装在一个自执行函数中,以防止造成全局污染。另一种选择是定义`move.count = 1`而不是count,而只是工作已经定义的`more()`全局变量。 (2认同)