0

私は間違いなく、なぜこれがテキストエリアで6を返さないのか疑問に思っています。何も返さない。 私はそれがjsスコープと関係があると考えましたが、私はそれを理解できません。javascriptの変数スコープに関する問題

<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> 
+0

正解はすでに与えられていますが、jsスコープの詳細については、こちらをご覧ください:http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting –

答えて

3

Inci関数の内部でvarキーワードを取り除きます。

var再宣言現在のスコープ内の変数、それはbrojInciのすべての呼び出しを再宣言しますので。

これが正しい方法でしょう:varキーワードは、変数を定義するため

var broj = 5; 

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

+1通常1外部変数をそのままにするために関数内で 'var'を使います(例えば、外側にvar' hey'があり、関数内で同じ名前を使用する必要があります)。 – JCOC611

+0

私はそうしましたが、テキストエリアがNaNになりました。私が期待しているように6番ではありません。 –

+1

@stanislav私のための作品:http://jsfiddle.net/aKFyD/ –

0

。問題は、あなたの変数を再宣言、他の回答の詳細などvarある

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

ok私はそれをしましたが、現在はtextareaの結果はNaNです。私が期待しているように6番ではありません。 –

0

、またはというにをしようとすると、実際には理由組み合わせで構文エラーをスロー:あなたの関数からvarを削除します。

はさておき、そのかかわらず、私はあまりを見ている:

function Inci(){ 
    document.frmMain.VrsteHolder.value = ++broj; 
} 
:あなたはインクリメントし、例えば、++前( increment operator変数を持つことによって、結果をすぐに得ることができます忘れないでください

You can test that version out here

+0

私はそれをしましたが、現在はテキストエリアがNaNになります。私が期待しているように6番ではありません。 –

関連する問題