2016-04-25 14 views
1

なぜ私のカウンタが機能していないのか分かりません。私はそれがWordPressのサイト上のいくつかの異なるコードで動作するので、それが必要なように感じるが、私がテストしている.htmlファイルから開くと、このコードで動作していない。私はコーダーではないので、自分のコードが混乱していると確信していますので、簡単に私に行ってください。onclick counter = array.length notfunctioning

<!doctype html> 
    <html> 
     <head> 
      <title>JS Test</title> 
      <meta charset="utf-8"> 
     </head> 
     <body> 
      <h1>Test Javascript</h1> 
      <form id="form1"> 
       <fieldset id="java"> 
        <legend>Form Append Test</legend> 
        <div id="tabelRow"> 
        </div> 
        <div id="button"> 
         <p><input type="button" onclick="myFunction()" value="Click"></p> 
        </div> 
       </fieldset> 
      </form> 
      <script type="text/javascript"> 
       function myFunction() { 
        var fs = document.getElementById("java"); 
        var button = document.getElementById("button"); 
        var newDiv = document.createElement("div"); 
        var newH = document.createElement("label"); 
        var hText = document.createTextNode("Product"); 
        var newP = document.createElement("select"); 
        var options = [ 
         { 
          "text" : "FHA", 
          "value" : "1" 
         }, 
         { 
          "text" : "USDA", 
          "value" : "2" 
         }, 
         { 
          "text" : "VA", 
          "value" : "3" 
         }, 
         { 
          "text" : "Convnetional", 
          "value" : "4" 
         }, 
         { 
          "text" : "Construction", 
          "value" : "5" 
         }, 
         { 
          "text" : "Chattel", 
          "value" : "6" 
         }, 
         { 
          "text" : "Fannie MAE HARP", 
          "value" : "7" 
         } 
        ]; 
        newH.appendChild(hText); 
        newDiv.className = "tablerow test"; 
        newDiv.appendChild(newH); 
        newDiv.appendChild(newP); 
        var ol = options.length; 
        var counter = 0; 

        if (counter == ol) { 
         alert("You have reached the limit of adding " + counter + " inputs"); 
        } 
        else { 
         for(var i = 0; i < ol; i++) { 
          var proMenu = options[i]; 
          newP.options.add(new Option(proMenu.text, proMenu.value)); 
         } 
        fs.appendChild(newDiv); 
        fs.insertBefore(newDiv, button); 
        counter++; 
        } 
       } 
      </script> 
     </body> 
    </html> 

+0

あなたは0に関数が入力されるたびにカウンタを設定するので、 'ol'が空でない限り、条件が真ではありません。 –

答えて

1

注意。しかし、ボタンをクリックした結果、関数が呼び出されるたびに0に再初期化されます。

初期化ロジックをすべて関数の外に置いて、クリックするたびに実際に実行したいことを実行する必要があります。

var fs = document.getElementById("java"); 
 
var button = document.getElementById("button") 
 
var options = [{ 
 
    "text": "FHA", 
 
    "value": "1" 
 
}, { 
 
    "text": "USDA", 
 
    "value": "2" 
 
}, { 
 
    "text": "VA", 
 
    "value": "3" 
 
}, { 
 
    "text": "Convnetional", 
 
    "value": "4" 
 
}, { 
 
    "text": "Construction", 
 
    "value": "5" 
 
}, { 
 
    "text": "Chattel", 
 
    "value": "6" 
 
}, { 
 
    "text": "Fannie MAE HARP", 
 
    "value": "7" 
 
}]; 
 
var ol = options.length; 
 
var counter = 0; 
 

 
function addOption() { 
 
    var newDiv = document.createElement("div"); 
 
    var newH = document.createElement("label"); 
 
    var hText = document.createTextNode("Product"); 
 
    var newP = document.createElement("select"); 
 
    newH.appendChild(hText); 
 
    newDiv.className = "tablerow test"; 
 
    newDiv.appendChild(newH); 
 
    newDiv.appendChild(newP); 
 

 
    if (counter == ol) { 
 
    alert("You have reached the limit of adding " + counter + " inputs"); 
 
    } else { 
 
    for (var i = 0; i < ol; i++) { 
 
     var proMenu = options[i]; 
 
     newP.options.add(new Option(proMenu.text, proMenu.value)); 
 
    } 
 
    fs.appendChild(newDiv); 
 
    fs.insertBefore(newDiv, button); 
 
    counter++; 
 
    } 
 
}
<!doctype html> 
 
<html> 
 

 
<head> 
 
    <title>JS Test</title> 
 
    <meta charset="utf-8"> 
 
</head> 
 

 
<body> 
 
    <h1>Test Javascript</h1> 
 
    <form id="form1"> 
 
    <fieldset id="java"> 
 
     <legend>Form Append Test</legend> 
 
     <div id="tabelRow"> 
 
     </div> 
 
     <div id="button"> 
 
     <p> 
 
      <input type="button" onclick="addOption()" value="Click"> 
 
     </p> 
 
     </div> 
 
    </fieldset> 
 
    </form> 
 
</body> 
 

 
</html>

+1

何時間も私を困惑させたような簡単な答えです。皆さんありがとう! –

3

ボタンをクリックするたびにcounter変数が0にリセットされているためです。

機能外に移動しvar counter= 0;、それが正常に動作します:あなたの機能myFunctionにあなたがゼロにcounterを初期化して、一度それをインクリメントすること

Fiddle