[英]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.