如何在jQuery中将变量抛出循环到另一个循环?[副本]

brtdzjyr  于 2023-10-17  发布在  jQuery
关注(0)|答案(2)|浏览(123)

此问题已在此处有答案

How do I return the response from an asynchronous call?(42个回答)
20天前关闭。
我在另一个循环中有一个循环,并试图将一个变量抛出内部循环,但我得到错误:
添加顺序:524未捕获引用错误:productPrice未定义
这是我运行这些循环的成功代码:

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 ;
    })
    // پایان لوپ آیتم هر شهر

},
// پایان موفقیت```

我尝试为变量设置数组,但没有成功。

2skhul33

2skhul331#

如果你使用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..
f5emj3cl

f5emj3cl2#

我在jQuery循环中使用了 result,这是最终代码:

// در صورت موفقیت
        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 productPrice;
                var e = 0;
                jQuery.each(objofprice, function() {
                    console.log(objofprice[e].id);
                    if(objofprice[e].productCode == objofproduct[i].productCode) {
                        var productPrice = [objofprice[e].basePrice];
                        result = productPrice;
                        console.log(productPrice[0]);
                        var z = z + 1;
                    } else {
                        console.log('برای محصول قیمت تعریف نشده است');
                        
                    };
                });
                console.log(result[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></div></div></div>";
                // تعیین ساختار مادر ایکس و کدی که باید هر بار اضافه شود
                $("#productx").append(productitem);
                // افزودن یک عدد به متغیر فرضی
                i = i + 1 ;
            })
            // پایان لوپ آیتم هر شهر

        },
        // پایان موفقیت

相关问题