正如標題所述,我正在嘗試執行一個 javascript,其中用戶輸入 0-9 之間的數字。然后它將匯總所有最后一位包含用戶數字的數字,即如果用戶選擇 7,則匯總 7、17、27、37、47、57、67、77、87 和 97。但是,它只是回傳a 0. 請幫忙。
<html>
<head>
</head>
<body>
<input type="text" id="write">
<button id="knapp">Klicka p? mig!</button>
<div id="box"></div>
<script>
document.getElementById("knapp").addEventListener("click", funktion);
var summa = 0;
var summa2 = 0;
function funktion(){
let imported = document.getElementById("write").value;
for(let i = 0; i < 100; i ){
summa = i;
if((i '').indexOf(imported)){
i = summa2;
document.getElementById("box").innerHTML = summa2;
}
}
}
</script>
</body>
</html>
uj5u.com熱心網友回復:
這一般可以概括為:
const found = [];
let searchFor = '7';
for(let i = 0; i < 100; i ){
if((i '').endsWith(searchFor)){
found.push(i);
}
}
console.log(found);
我認為endsWith比 更容易推理,順便說一下indexOf,它-1在未找到時回傳。
存盤在陣列中找到的內容也更容易,如果需要,您可以稍后取回分隔字串。
編輯
回到原來的問題,在函式內部和外部維護變數通常不是一個好主意,而且實際上也沒有必要,所以我洗掉了summa和summa2。
在回圈內部,由于我不知道的原因,您將這些全域變數之一設定為當前索引,因此已將其洗掉。
如前所述,indexOf回傳在字串中找到子字串的位置。例如,當您測驗時,'9'.indexOf('7')您會得到-1,但未找到,但是在 JavaScript 中測驗真實性時,將轉換為 true。因此,除了您正在尋找的內容之外,幾乎所有內容都是真實的。你可以!用來否定它,但這只會變得更丑。
在您的測驗之后,您將添加summa2到i,但是summa2永遠不會從 的初始值改變0。
最后,在回圈內部,您不斷地將文本框的值設定為 100 次,其值summa2如前所述,始終為0。
編輯 2
這段代碼不會對數字求和,它只是獲取數字,并且假設對它們求和應該很容易。從 OP 的樣本資料與他們使用的詞中不清楚他們究竟想要什么。
uj5u.com熱心網友回復:
您不需要實際遍歷每個數字來確定它是否以特定數字結尾。如果您采用 0 - 100 的范圍,那么所有以 7 結尾的數字將是 7、17、27 等。跳躍是 10。當您開始增加用戶提供的數字的長度時,例如 27,那么您的跳躍變成 100
function numbersEndsWith(number, start, end) {
const step = Math.pow(10, (number "").length);
for (let i = number start; i < end; i = step) {
console.log(i);
}
}
numbersEndsWith(7, 0, 100);
numbersEndsWith(7, 50, 100);
uj5u.com熱心網友回復:
洗掉summa = i;并更改i = summa2; 為 summa2 = i;. 塊document.getElementById("box").innerHTML = summa2;
后放置for。我沒有嘗試,但應該作業。
我會做完全不同的方式:如果你需要總結 7, 17, 27, 37, 47, 57, 67, 77, 87, and 97 That is 0 10 ... 80 90 7*10. 第一部分總是450,第二部分是你的數字乘以 10。這是一個單行函式,你不需要 for() 回圈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383760.html
標籤:javascript html 功能 for循环 指数
