簡體   English   中英

JavaScript for循環:如何使我的數字轉換器工作?

[英]JavaScript for-loop: how to make my number translator work?

我正在嘗試進行數字翻譯,將數字從一種語言翻譯成另一種語言。 不幸的是,它不起作用。 我怎么了 還是我弄錯了什么? 非常感謝!

 <html> <head> <title>LT3210 example: for loop</title> <script> function translate() { var engNum = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"]; var chiNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; var myEngNum = document.getElementById("num_input").value; var trans = ""; for (var i = 0; i < engNum.length; i++) { var curEngNum = engNum[i]; while(myEngNum == curEngNum){ trans = chiNum[i]; document.getElementById("output").innerHTML = trans; } } } </script> </head> <body> <h1>Number Translator</h1> <form> <input type="text" id="num_input" size="30" placeholder="Enter a number in English" /> </form> <br /> <button onclick="translate()">Translate</button> <br /> <p id="output">??</p> </body> </html> 

首先,您不能將translate用作函數名稱。

其次,您需要執行if語句來代替while循環。

 <html> <head> <title>LT3210 example: for loop</title> <script> function translate2() { var engNum = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"]; var chiNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; var myEngNum = document.getElementById("num_input").value; var trans = ""; for (var i = 0; i < engNum.length; i++) { var curEngNum = engNum[i]; if(myEngNum == curEngNum){ trans = chiNum[i]; document.getElementById("output").innerHTML = trans; } } } </script> </head> <body> <h1>Number Translator</h1> <form> <input type="text" id="num_input" size="30" placeholder="Enter a number in English" /> </form> <br /> <button onclick="translate2()">Translate</button> <br /> <p id="output">??</p> </body> </html> 

首先, <button>具有一個名為translate的屬性,因此,如果要使用全局函數,則必須使用window.translate使其正確解析。

其次,在處理非HTML時,應使用textContent而不是innerHTML

第三,您可以使用Array.indexOf||來處理這兩個循環並使轉換更加簡單。 操作員:

var myEngNum = document.getElementById("num_input").value;
var index = engNum.indexOf(myEngNum);
// If index == -1, chiNum[index] will evaluate to undefined, so we || it with '??'
var trans = chiNum[index] || '??';
document.getElementById("output").textContent = trans;

或者,作為單線:

document.getElementById("output").textContent = chiNum[engNum.indexOf(document.getElementById("num_input").value)] '??';

您的代碼已完全修復:

 <html> <head> <title>LT3210 example: for loop</title> <script> function translate() { var engNum = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"]; var chiNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]; document.getElementById("output").textContent = chiNum[engNum.indexOf(document.getElementById("num_input").value)] || '??'; } </script> </head> <body> <h1>Number Translator</h1> <form> <input type="text" id="num_input" size="30" placeholder="Enter a number in English" /> </form> <br /> <button onclick="window.translate()">Translate</button> <br /> <p id="output">??</p> </body> </html> 

暫無
暫無

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

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