2014-06-26 59 views
-2

我使用下面的代碼:的JavaScript textarea的值,如果

<html> 
    <head> 
    <script type="text/javascript"> 

     function asd(){ 
      var b = document.getElementById("txt").value; 
      var c = document.getElementById("txt2").value; 
      if(b > c){alert("The first value more than the second value");} 
     } 

    </script> 
    </head> 
    <body> 
     <textarea id="txt"></textarea> 
     <input type="button" value="Click me" onclick=asd()> 
     <br> 
     <textarea id="txt2"></textarea> 
    </body> 
</html> 

但代碼運行不正常。 我正在寫第一個textarea,5.
我正在寫scnd textarea,40.
並且報警有效。我不明白。我搜索並找到解決方案。

if(parseInt(b,10)) > (parseInt(c,10))) 

那麼爲什麼第一次失敗呢?

+1

最初它失敗了,因爲你從表單輸入得到的值是字符串。 parseInt將字符串轉換爲數字,以便可以正確比較。 –

+0

我明白了,謝謝 – Hellmorf

回答

0

引號它第一次失敗,因爲數字被解析爲字符串。

var b = document.getElementById("txt").value; //b = "5" 
var c = document.getElementById("txt2").value; // c = "40" 
if(b > c){ // "5" > "40" is false because the browser will not understand this. 
    alert("The first value more than the second value"); 
} 

如果使用parseInt,則字符串將被解析爲整數。

所以:

var b = document.getElementById("txt").value; //b = "5" 
var d = parseInt(b); // d = 5 

的「大於/小於」符號將只與整數(和浮點等),但不處理字符串。這就是爲什麼if語句返回false。

+0

謝謝,你解釋得很好。 – Hellmorf

0

您的代碼無法正常工作,因爲您正在存儲字符串。這就是爲什麼你無法正確比較它們的原因。您需要將它們轉換爲整型數據類型,然後才能比較它們或執行算術運算。

function asd(){ 
var b = document.getElementById("txt").value; 
var c = document.getElementById("txt2").value; 
if(parseInt(b) > parseInt(c)){alert("The first value more than the second value");} 
} 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

The parseInt function converts its first argument to a string, parses it, and returns an integer or NaN. If not NaN, the returned value will be the decimal integer representation of the first argument taken as a number in the specified radix (base). For example, a radix of 10 indicates to convert from a decimal number, 8 octal, 16 hexadecimal, and so on. For radices above 10, the letters of the alphabet indicate numerals greater than 9. For example, for hexadecimal numbers (base 16), A through F are used. 

If parseInt encounters a character that is not a numeral in the specified radix, it ignores it and all succeeding characters and returns the integer value parsed up to that point. parseInt truncates numbers to integer values. Leading and trailing spaces are allowed. 
1

你錯過了周圍的方法

<html> 
<head> 
<script type="text/javascript"> 

function asd(){ 
    var b = document.getElementById("txt").value; 
    var c = document.getElementById("txt2").value; 
    if(b > c){ 
     alert("The first value more than the second value"); 
    } 
} 

</script> 
</head> 
<body> 
<textarea id="txt"></textarea> 
<input type="button" value="Click me" onclick="asd()"> 
<br> 
<textarea id="txt2"></textarea> 
</body> 
</html> 
+1

這段代碼不起作用,你需要在''''''''''''''''''和'''''''''然後它會完美:) – blex

+0

工作在我的鉻,不是說你錯了,但應該加上 – haakym

+1

謝謝,但問題在上面回答(亞當馬修) – Hellmorf

相關問題