簡體   English   中英

在Javascript中將字符串對象轉換為整數

[英]Convert String Object to integer in Javascript

我有這個功能:

function validar(e) {
  var xx = 1;
  tecla = (document.all) ? e.keyCode : e.which;     // 2
  if (tecla == 8) return true;                      // 3
  patron = /[A-Za-z\s]/;                            // 4
  te = String.fromCharCode(tecla);                  // 5

  var valorNumerico = Number(te); 
  if (te > 1 && te < 11) {
    alert('Calificación:' + valorNumerico)
  } else {
    alert('La Calificación debe estar entre 2 y 10  - ' + valorNumerico)
  }
}

目標將捕獲用戶的輸入並驗證范圍為2到10

但是,告訴我NaN

我嘗試了valorNumerico = parseInt(te);

告訴我NaN

我嘗試了valorNumerico = Integer.parseInt(te);

告訴我NaN

那么,如何轉換為整數? 謝謝,我在asp.net中使用了javascript中的函數

據我了解: https//developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

String.fromCharCode( )會將一個數字(或一系列數字)轉換為它們對應的unicode值序列; 因此,無論傳遞給fromCharCode()任何參數fromCharCode()應實際返回可解析為整數的字符串。 換句話說,給定數字時, fromCharCode()將返回非數字值。

我會像其他人建議的那樣使用console.log(tecla)console.log(e)來查看您真正處理的值。

如果您確實在偵聽keyup或keydown事件,則應該由parseInt()解析String.fromCharCode(e.keyCode) parseInt() 例如,如果e.keycode返回值0x31 ,則應該能夠使用fromCharCode()將其解析為字符串,並使用parseInt()解析為整數。

但是,如果您不確定要處理的數據是什么,或者事情看起來很奇怪,日志記錄永遠是您的最佳選擇。

parseInt()並不總是以10為底。這可能是其中的一部分。

但是我真的懷疑teclate 沒有您認為的價值。 嘗試將console.log()語句放在parseInt()調用的上方,這樣您就可以了解該函數的真正含義。 這可能會讓您感到驚訝。

您尤其應該閱讀以下相關問題:

JavaScript KeyCode與CharCode

告訴您這一行:

tecla = (document.all) ? e.keyCode : e.which; 

應該看起來像這樣:

tecla  = (typeof e.which == "number") ? e.which : e.keyCode

但是,即使對於某些舊版瀏覽器和不可打印的字符,或者即使您使用的不是keypress也可能無法滿足您的需求,例如keyupkeydown

問題似乎出在以下幾行:

1) te = String.fromCharCode(tecla); // 5
2) var valorNumerico = Number(te);

查看您的代碼行1似乎暗示tecla是一個數字,它也應該像fromCharCode()函數期望一個數字並返回一個字符一樣; 假設tecla是65,所以line1將返回“ A”,該變量將分配給te變量。

現在在第2行中,您正在嘗試將字符轉換為數字,因為(例如,對於A)該字符不能轉換為數字,因此您會得到NaN。

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM