2016-09-03 20 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]を使用します。次に、入力を整数/浮動小数点数として解析するには、parseFloatまたはparseIntを使用する必要があります。また、タグには、のスクリプト、リンク、メタ、タイトル、その他のタグがない限り、HTMLコードが入ります。最後に、構文エラーがあります。

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 

リターン配列を持っている:ここでは

は実施例であります! https://jsfiddle.net/evpog628/1/

0

1)それはそれは高速です、あなたが唯一の要素を選択し、getElementById()を使用することをお勧めします(「ID」がHTML内で一意である必要があります。

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; 

、あなたが持っている文章は、コードここ

をmisdeclared資料)。

2)

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

3正しいHTML構造を使用してください)あなたが正しくあなたのコードを動作させるために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

あなたはコードが動作しません。これらのタグは頭の中に入れてはならず、JSは正しいものではないので、HTMLは正しくありません。 – Li357

関連する問題