我有一個問題,我的代碼不檢查所有存儲對象條形碼。我希望它檢查所有的螺栓,支架,螺絲刀和錘子條形碼,並檢查它與輸入一個,如果它相同,然後顯示相應的對象。但它總是適用於最後一個。我不知道是什麼導致了這一點。行數量有多少輸入(可以點擊一個按鈕來添加新的輸入)輸入有名稱輸入1輸入2輸入3 ...等等...For循環不檢查每個對象的屬性
var storage = {
bolts: {
barcode: 57263144,
price: 0.5,
name: '100mm Bolts',
stock: 8642,
},
brackets: {
barcode: 13245627,
price: 0.2,
name: 'Plain Brackets',
stock: 5201,
},
screwdriver: {
barcode: 52678349,
price: 15,
name: 'Screwdriver',
stock: 30,
},
hammer: {
barcode: 86583916,
price: 25,
name: 'Hammer',
stock: 5,
}
}
function check(){
Object.keys(storage).forEach(function(key) {
for (var i = 1; i <= rowAmount; i++){
var barcodeCheck = document.getElementById("input"+i).value;
var input = document.getElementById("input"+i).value;
if (input.length > 8){
document.getElementById("input"+i).style.backgroundColor = "red";
}
else {
document.getElementById("input"+i).style.backgroundColor = "white";
}
if (barcodeCheck == storage[key].barcode){
document.getElementById("name"+i).innerHTML = "Name: "+storage[key].name;
document.getElementById("price"+i).innerHTML = "Price: £"+storage[key].price+"/one";
document.getElementById("stock"+i).innerHTML = "In stock: "+storage[key].stock;
}
else {
document.getElementById("name"+i).innerHTML = "";
document.getElementById("price"+i).innerHTML = "";
document.getElementById("stock"+i).innerHTML = "";
}
}
});
setTimeout(check,1);
}
check();
什麼是「rowAmount」,它在哪裏定義? – Craicerjack
rowAmount是有多少輸入(我有一個按鈕,增加了新的輸入)每個新的輸入被稱爲input1 input2 input3 ... – killereks
請包括[mcve]。這個問題的最小部分將包括提到的@Craicerjack的'rowAmount'和代碼運行的HTML。作爲一個附註,你在1毫秒內再次調用'check'來關閉你的'check'函數。這可能會導致頁面響應性的一些嚴重問題。 –