2017-02-24 113 views
-2

大家好!JavaScript使用html輸入作爲變量的問題(初學者!)

我有一個簡單的計算器類型網站的問題。我的問題涉及使用javascript函數來使用HTML輸入表單中的變量計算方程。

下面是我的javascript函數,它放在HTML文件中的表單上方。

   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

而你遇到的確切問題是?你做了什麼調試?您在瀏覽器的控制檯中遇到什麼錯誤? (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循環。