2016-09-03 91 views
-2

這應該是一個沒有道理但我沒有經驗的Javascript,我不明白爲什麼這不應該工作。計算用戶輸入的數字之間的差異

<!doctype html> 

<html lang="en"> 
<head> 
    <meta charset="utf-8"> 

    <title>Undantag</title> 
    <p> STD: </p> 
    <input type="number" name="STD"> 
    <p> STA: </p> 
    <input type="number" name="STA"> 
    <p> ATD: </p> 
    <input type="number" name="ATD"> 
    <p> ATA: </p> 
    <input type="number" name="ATA"> 


<button onclick="useUndantag()">Click me</button> 


</head> 

<body> 
    <script> 
    function useUndantag() { 
     var a = document.getElementsByName("STD"); 
     var b = document.getElementsByName("ATD"); 
     var c = document.getElementsByName("STA"); 
     var d = document.getElementsByName("ATA"); 


     if (a-b >1) { 
     alert("No undantag"); 
     } 
      else if (d-c >2) { 
       alert ("No undantag"); 

       else() { 
        alert ("NO EU FOR YOU!") 

       } 

      } 
    } 

    </script> 
</body> 
</html> 

問題是,我沒有得到任何警報,我似乎無法弄清楚爲什麼。如果任何人有任何提示,如果會很高興,我可以得到任何幫助。

+0

我認爲你有一個語法錯誤。它應該是'else {...}'而不是'else(){....}' – Titus

回答

1

首先,getElementsByName返回一組HTML元素。使用[0]訪問第一個元素。接下來,您必須使用parseFloatparseInt將輸入解析爲整數/浮點數。此外,除非您擁有腳本,鏈接,元,標題和其他標記,否則HTML代碼將進入body標記。最後,你有一個語法錯誤:

else() { } 

不應該有括號。在else if之後,你也錯過了一個大括號,在else之後移除一個右大括號。這裏有一個固定的代碼段:

function useUndantag() { 
 
     var a = document.getElementsByName("STD")[0].value; 
 
     var b = document.getElementsByName("ATD")[0].value; 
 
     var c = document.getElementsByName("STA")[0].value; 
 
     var d = document.getElementsByName("ATA")[0].value; 
 

 
     if (parseInt(a) - parseInt(b) > 1) { //notice the use of parseInt, you can use parseFloat to deal with decimals 
 
      alert("No undantag"); 
 
     } else if(parseInt(d) - parseInt(c) > 2) { 
 
      alert("No undantag"); 
 
     } else { //Notice no parentheses and some more braces 
 
      alert("NO EU FOR YOU!") 
 
     } 
 
    }
<p> STD: </p> <!-- HTML is in body tag !--> 
 
<input type="number" name="STD"> 
 
<p> STA: </p> 
 
<input type="number" name="STA"> 
 
<p> ATD: </p> 
 
<input type="number" name="ATD"> 
 
<p> ATA: </p> 
 
<input type="number" name="ATA"> 
 

 

 
<button onclick="useUndantag()">Click me</button>

此外,請務必使用.value來獲取值。

+0

你真的幫了我,我從來沒有用過Javascript,我會完成他的工作,然後嘗試學習更多。謝謝您的幫助! –

+0

@OscarAndersson如果我有幫助,請考慮接受答案:) – Li357

0

您的語法不正確。

此外,如果您要比較輸入的值,則需要獲取輸入的value屬性。

另外,document.getElementsByName返回一個元素數組,因此您需要選擇第一個元素。

這裏是一個工作示例:

<!doctype html> 
 
<html lang="en"> 
 

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

 
<body> 
 
    
 
    <p> STD: </p> 
 
    <input type="number" name="STD"> 
 
    <p> STA: </p> 
 
    <input type="number" name="STA"> 
 
    <p> ATD: </p> 
 
    <input type="number" name="ATD"> 
 
    <p> ATA: </p> 
 
    <input type="number" name="ATA"> 
 

 
    <button onclick="useUndantag()">Click me</button> 
 

 
    <script> 
 
    
 
    function useUndantag() { 
 
     var a = document.getElementsByName("STD")[0].value; 
 
     var b = document.getElementsByName("ATD")[0].value; 
 
     var c = document.getElementsByName("STA")[0].value; 
 
     var d = document.getElementsByName("ATA")[0].value; 
 

 
     if (a - b > 1) { 
 
     alert("No undantag"); 
 
     } else if (d - c > 2) { 
 
     alert("No undantag"); 
 
     } else { 
 
     alert("NO EU FOR YOU!") 
 
     } 
 
    } 
 
    
 
    </script> 
 
    
 
</body> 
 

 
</html>

0

你有足夠的錯誤

功能

document.getElemenstByName 

返回數組!

var a = document.getElementsByName("STD")[0].value; 
    var b = document.getElementsByName("ATD")[0].value; 
    var c = document.getElementsByName("STA")[0].value; 
    var d = document.getElementsByName("ATA")[0].value; 

,你有句誤報的

這裏代碼: https://jsfiddle.net/evpog628/1/

0

1)這是更好地使用getElementById(),它的速度更快,只選擇一個元素(「ID」必須是在HTML獨特文件)。

2)一定要使用正確的HTML結構

<!doctype html> 
<html> 
    <head> 
     <meta> 
     <title></title> 
    </head> 
    <body> 
     <input> 
     <script> 
     </script> 
    </body> 
</html> 

3)你需要確保你得到的整數或HTML的字段值浮動正確地使你的代碼工作。 parseInt()pareseFloat()

<!doctype html>  
<html lang="en"> 
<head> 
    <meta charset="utf-8">  
    <title>Undantag</title> 
</head> 

<body> 
    <p> STD: </p><input type="number" id="STD"> 
    <p> STA: </p><input type="number" id="STA"> 
    <p> ATD: </p><input type="number" id="ATD"> 
    <p> ATA: </p><input type="number" id="ATA"> 

<button onclick="useUndantag();">Click me</button> 
    <script> 
    function useUndantag() { 
     var a = document.getElementById("STD"); 
     var b = document.getElementById("ATD"); 
     var c = document.getElementById("STA"); 
     var d = document.getElementById("ATA"); 

     if (parseInt(a.value)-parseInt(b.value)>1) { 
      alert("No undantag"); 
     } 
     else if (parseInt(d.value)-parseInt(c.value) >2) 
     { 
      alert ("No undantag"); 
     } 
     else 
     { 
      alert ("NO EU FOR YOU!"); 
     } 
    } 
    </script> 
</body> 
</html> 
+0

沒有解釋的代碼可以幫助任何人!請添加一個解釋以更好地回答! – Li357

+0

@Adnrew L.你說得對,下次我會做得更好。我只想發佈一個工作解決方案。我希望他會研究所有工作示例的代碼並從中學習。 –

+0

你的代碼不起作用。 HTML是不正確的,因爲這些標籤不應該在頭腦中,JS不對,只是一些批評。 – Li357