2017-02-24 8 views
-2

こんにちは皆!変数としてhtml入力を使用したjavascriptの問題

私は簡単な電卓型のウェブサイトでいくつかの問題があります。私の問題は、HTML入力フォームから変数を使用して方程式を計算するためにJavaScript関数を使用することです。

以下は、HTMLファイルのフォームの上に配置された、私のjavascript関数です。

   var userName = document.getElementsByName("userName")[0].value; 
 
       var userMmr = document.getElementsByName("userMmr")[0].value; 
 
       var userDesmmr = document.getElementsByName("userDesmmr")[0].value; 
 
       var userWinrate = document.getElementsByName("userWinrate")[0].value; 
 

 
       function findshit(){ 
 
       alert(userMmr.value); 
 

 
       var LR = 1.0 - userWinrate.value; 
 
       var GP = 1; 
 

 
       while (1){ 
 
        var GW = GP * userWinrate.value; 
 
        var GL = GP * LR; 
 
        var MMRG = GW * 25; 
 
        var MMRL = GL * 25; 
 
        var TMG = MMRG - MMRL; 
 
        if (TMG + userMmr.value >= userDesmmr.value) { 
 
        alert("Congrats! it will take you " + String(GP)); 
 
        } else { 
 
        GP += 1; 
 
        } 
 
       } 
 
       } 
 
     
<h2>Enter your information below</h2> 
 
      </br> 
 
     <form> 
 
      What's your name?:<br> 
 
      <input type="text" name="userName" onkeyup="findshit();" onchange="findshit();"/><br> 
 
      </br> 
 
      What's your current mmr?:<br> 
 
      <input type="text" name="userMmr" onkeyup="findshit();" onchange="findshit();"/><br> 
 
      </br> 
 
      What's your desired mmr?:<br> 
 
      <input type="text" name="userDesmmr" onkeyup="findshit();" onchange="findshit();"/><br> 
 
      </br> 
 
      What's your current win rate?<br>(put in decimal form eg. 50% = .50):<br> 
 
      <input type="text" name="userWinrate" onkeyup="findshit();" onchange="findshit();"/"><br> 
 
      <br> 
 

 
      
 
      <button onclick="findshit();">Try it</button>

+1

あなたが抱えている正確な問題は?何のデバッグをしましたか?ブラウザのコンソールにはどんなエラーがありますか? while(1) 'は何をすると思いますか? – j08691

+0

関数内の入力値を取得する必要があります。ユーザーが値を変更した後ではなく、ページが最初に読み込まれるときに一度設定するだけです。 – Barmar

+0

'userMmr.value'は意味がありません。最初に 'userMmr'を設定するときに' .value'を使いました。 – Barmar

答えて

-1

あなたが一番上にすべての変数を設定するとき.valueを使用しないでください。関数内のコードは、更新された値を取得するために.valueを使用するため、これらの変数が要素になることを期待しています。だから、それだけで次のようになります。

 var userName = document.getElementsByName("userName")[0]; 
     var userMmr = document.getElementsByName("userMmr")[0]; 
     var userDesmmr = document.getElementsByName("userDesmmr")[0]; 
     var userWinrate = document.getElementsByName("userWinrate")[0]; 

あなたはまた、 HTML後にスクリプトを置く、またはwindow.onload関数内のすべてのコードを配置する必要があります。 HTMLがロードされる前にスクリプトを実行すると、document.getElementsByName()呼び出しのどれも要素を見つけることができません。

-1

while(1)ループを削除または変更する必要があります。それは無限ループなので。私はシナリオでIfループを使うべきだと思います。

関連する問題