我在另一个循环中有一个循环,并试图将变量抛出内循环,但出现错误:
addorder:524未捕获的ReferenceError:productPrice未定义
这是我运行这些循环的成功ajax代码:
success: function(data) {
// تبدیل اطلاعات قیمت و موتور ها به جیسون
const objofproduct = JSON.parse(data.products);
const objofprice = JSON.parse(data.prices);
console.log(objofprice[0].productCode);;
// صفر لحاظ کردن متغیر فرضی
var i = 0;
// لوپ تولید آیتم هر شهر
jQuery.each(objofproduct, function(){
var e = 0;
jQuery.each(objofprice, function() {
console.log(objofprice[e].id);
if(objofprice[e].productCode == objofproduct[i].productCode) {
var productPrice = [objofprice[e].basePrice];
console.log(productPrice[0]);
var z = z + 1;
} else {
console.log('برای محصول قیمت تعریف نشده است');
var z = z + 1;
};
});
console.log(productPrice[0]);
// تعریف کد اچ تی ام ال قابل تکرار در صفحه
var productitem = "<div class='mymotor grid grid-cols-3 p-4 my-4 rounded-lg border-2 hover:bg-slate-100'> <div class='col-span-1 pl-4'><img class='w-full rounded-lg hover:shadow' src='"+objofproduct[i].imageUrl+"'/></div><div class='descriptionbig m-3 col-span-2 grid grid-cols-1 flex h-min'><div class='name pb-6 col-span-1 ltr w-full flex items-center h-fit font-semibold antialiased'><div class='w-2/3 flex justify-end'>"+objofproduct[i].brandName+" "+objofproduct[i].modelName+" "+objofproduct[i].tipName+"</div><div class='w-1/3 productcode font-light text-sm flex justify-start'>"+objofproduct[i].productCode+"</div></div><div class='text-lg'><b>» رنگ:</b> "+objofproduct[i].colorName+" <br> <b>» توضیحات:</b> "+objofproduct[i].description+"<br>"+productPrice[0]+"</div></div></div>";
// تعیین ساختار مادر ایکس و کدی که باید هر بار اضافه شود
$("#productx").append(productitem);
// افزودن یک عدد به متغیر فرضی
i = i + 1 ;
})
// پایان لوپ آیتم هر شهر
},
// پایان موفقیت```
我尝试为变量设置数组,但没有成功。
如果您使用
var
声明变量,则该变量的作用域将限于声明它的函数。
要在外循环中访问
productPrice
,您需要在内循环范围之外声明它。
代码的相关部分变为
jQuery.each(objofproduct, function(){
var productPrice; // productPrice is declared here to make it accessible in both loops
var e = 0;
jQuery.each(objofprice, function() {
console.log(objofprice[e].id);
if(objofprice[e].productCode == objofproduct[i].productCode) {
var productPrice = [objofprice[e].basePrice];
console.log(productPrice[0]);
var z = z + 1;
} else {
console.log('برای محصول قیمت تعریف نشده است');
var z = z + 1;
};
});
console.log(productPrice[0]);
// rest of code..