2016-09-15 20 views
0

1つのJavaScriptファイルに変数を持つ複数の関数を持つ適切な方法については興味があります。私はそれのための適切な構文を理解しているように見えることはできません。同じファイル内に複数のJavaScript関数を持つ方法

私はrandomsnippets.comからこの例を複製しようとしていますが、フォームの他の領域に追加するオプションがあるようにしたいと考えています。私は、スクリプトタグやjsファイルの束を持っているとは思わない!

ので復習に、私はこの

variable a = value 
variable b = value 
function name(something){ 
stuff for variable a 
} 
function name(something){ 
stuff for variable b 
} 

感謝任意の助けのような何かをしたいと思います!

<script> 
 
     var counter = 1; 
 

 
    var limit = 3; 
 

 
    function addInput(divName){ 
 

 
     if (counter == limit) { 
 

 
       alert("You have reached the limit of adding " + counter + " inputs"); 
 

 
     } 
 

 
     else { 
 

 
       var newdiv = document.createElement('div'); 
 

 
       newdiv.innerHTML = "Entry " + (counter + 1) + " <br><input type='text' name='myInputs[]'>"; 
 

 
       document.getElementById(divName).appendChild(newdiv); 
 

 
       counter++; 
 

 
     } 
 

 
    } 
 
    </script> 
 
<form method="POST"> 
 

 
    <div id="dynamicInput"> 
 

 
      Entry 1<br><input type="text" name="myInputs[]"> 
 

 
    </div> 
 

 
    <input type="button" value="Add another text input" onClick="addInput('dynamicInput');"> 
 

 
</form>

+3

だから問題は何ですか? – epascarello

+1

異なる名前を使用していることを確認してください。複数の機能でうまくいくはずです。 – Bergi

+1

原則として、グローバルを避けるようにしてください。代わりにクロージャを使用して* counter *と* limit *への参照を保持することができます。 – RobG

答えて

0

私は私が正しくあなたの問題を得たか分かりません。私はグローバル変数の問題を想定しており、解決策を提供しようとしています。もし私があなただったら、私はこのようなアプローチをします。グローバル変数を使うのは良い解決策ではありません。ページがリフレッシュされると、変数がリセットされます。それで精度はそこにはないでしょう。私が示唆しているのは、オンザフライで入力回数を得ることです。

var limit = 3; 

function addInput(divName){ 

    var counter = 1; 
    counter=$("#"+divName).children("input").length; 

if (counter == limit) { 

    alert("You have reached the limit of adding " + counter + " inputs"); 

} 

else { 

    var newdiv = document.getElementById(divName); 

    newdiv.innerHTML = newdiv.innerHTML+"<br/>Entry " + (counter + 1) + " <br><input type='text' name='myInputs[]'>"; 

    document.getElementById(divName).appendChild(newdiv); 

    counter++; 

} 

}