javascript中变量范围的问题

时间:2011-02-08 23:00:36

标签: javascript variables global-variables local-variables scopes

好的,我当然很困惑,为什么这不会在textarea中返回6。它没有返回任何东西。 我认为它与js范围有关,但我无法弄明白。

<body>

    <script language="Javascript">
    var broj = 5;  

    function Inci(){
    var broj++;
    document.frmMain.VrsteHolder.value = broj;
    }

    </script>

    <form name="frmMain" method="get" action="script.php">

    <textarea name="VrsteHolder" rows="4"> </textarea>
    <input type="button" value="Dodaj porudzbinu" name="buttonDodaj" onClick="Inci();"/> 

    </form>

</body>

3 个答案:

答案 0 :(得分:3)

删除var函数内的Inci关键字。

当前范围内的

var 重新声明变量,因此每次调用broj时都会重新声明Inci

这是正确的方法:

var broj = 5;  

function Inci(){
   document.frmMain.VrsteHolder.value = ++broj;
}

答案 1 :(得分:0)

因为var关键字定义了变量。从您的函数中删除var

function Inci(){
    broj++;
    document.frmMain.VrsteHolder.value = broj;
    }

答案 2 :(得分:0)

问题是var,因为另一个回答详细信息,重新声明您的变量,或者尝试,而实际上由于组合而引发语法错误。

顺便说一下,虽然我看到的更少:不要忘记你可以通过在变量之前使用++(increment operator来增加并立即获得结果,例如:

function Inci(){
  document.frmMain.VrsteHolder.value = ++broj;
}

You can test that version out here