鳳凰求蠱
2022-07-15 10:22:31
我試圖在 num1 和 num2 之間進行比較:<form> <input placehoder="num1" type="text" id="num1"/> <input placehoder="num1" type="text" id="num2"/> <button type="button" id="comparar">Compara</button></form>問題是,直到我發現要聲明輸入將是帶有let num1 = parseInt(document.getElementById("num1").value);系統工作的命令的數字,但有時它沒有顯示正確的警報。let compare = document.getElementById("comparar");function comparator(){ let num1 = parseInt(document.getElementById("num1").value); let num2 = parseInt(document.getElementById("num2").value); if ( num1 > num2){ alert('num1 higher'); }else if(num1 == num2){ alert('are equal'); } else{ alert('num2 higher') }}compare.addEventListener('click', comparator);有誰知道為什么不使用 parseInt 比較兩個數字時會顯示隨機結果?,基本上它在比較什么?謝謝
4 回答

慕尼黑8549860
TA貢獻1818條經驗 獲得超11個贊
您應該validate
在比較之前將 number1 和 number2 設置type="number"
為輸入
示例parseInt("1a")
返回 1
如果輸入 1a 和 1,則顯示相等。

皈依舞
TA貢獻1851條經驗 獲得超3個贊
如果沒有 parseInt,您將比較兩個“字符串”而不是兩個“int”。
它不是隨機的,它按 1、2、3、... 的順序取數字,你會得到類似的結果:"2" > "10" ==> true

慕雪6442864
TA貢獻1812條經驗 獲得超5個贊
如果不使用 parseInt,您將比較兩個字符串。在 JavaScript 中,字符串按字母順序與首字母進行比較,例如:“banana” > “apple” 將返回 true。如果第一個字母相等,則比較第二個字母,依此類推。大寫字母優先于小寫字母。

一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
表單中的輸入是字符串對象。在由數字組成的字符串對象上調用 parsInt 會將其轉換為數字對象。
您可以使用 typeof 方法來檢查類型。像這樣:
var num1 = "1"
var num2 = 1
console.log(typeof(num1)) // Output -> string
console.log(typeof(num2)) // Output -> number
在此示例中,num1 是字符串對象,而 num2 是數字對象,即使它們具有相同的數字。
添加回答
舉報
0/150
提交
取消