راکت
حل شده

اضافه شدن undefined به url در جاوا اسکریپت

15 پاسخ

دوستان سلام
من ی ارایه دارم توی جاوا اسکریپت که قراره یک سری پارامتر هردفعه روی یک دکمه کلیک شد ازش حذف شه و به یه صفحه ریدایرکت بشه اما زمانی که ریدایرکت میشه undefined به ته url میچسپه چکاری میتونم انجام بدم برای حذف این مقدار ؟
کدی که برای هدایت شدن نوشتم

let sku =['RAB-6622382420','RAB-1497747660','RAB-1497747660'];
 let target ='';
                if (sku.length === 3){
                    target = `/compare/${sku[0]}/${sku[1]}/${sku[2]}`
                }else if(sku.length === 2){
                    target = `/compare/${sku[0]}/${sku[1]}`
                }else if(sku.length === 1){
                    target = `/compare/${sku[0]}`
                }else if (sku.length === 0){
                    target = `/`
                }
                window.location = target;

url :

http://rabcoshop.test/compare/RAB-6622382420/RAB-1497747660/undefined
ثبت پرسش جدید

پاسخ‌ها

15
میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

بهترین پاسخ

مشکل تون اینه که شما اومدید و از تابع delete برای حذف عناصر آرایه استفاده کردید.
این تابع باعث بوجود آوردن حفره هایی در آرایه شما میشه و مقدار undefined رو درونش قرار میده.

از تابع splice استفاده کن. مثال:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 1);        // Removes the third element (Apple) of fruits
میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

کد شما درسته، مشکلش چیه؟
کدی که نوشتی درست کار میکنه و هر سه مورد رو بوجود میاره:

https://roocket.ir/compare/RAB-6622382420/RAB-1497747660/RAB-1497747660
rabco
rabco
@rabco

تخصص: Full Stack developer

ته url رو نگاه کنید بعد از رفرش undefined اضافه شده زمانی که یکی از عنصر های ارایه حذف میشه این undefined نباید باشه

شاید پاسخ شما همین‌جا باشد

سید حسین رضوی
سید حسین رضوی
@hossein.r.1442

تخصص: برنامه نویس وب و طراح رابط کاربری

یه کاری کنید به جای اون عدد ایندکس از length استفاده کنید ببینید چه فرقی میکنه نتیجه

target = `/compare/${sku[sku.length - 1]}/${sku[sku.length - 2]}/${sku[sku.length - 3]}`

ببینید نتیجه فرق کرد، یا اینکه توی کنسول خطایی دارید

rabco
rabco
@rabco

تخصص: Full Stack developer

ممنونم خطایی توی کنسول ندارم نتیجه هم همونه هیچ راهی نداره که مقداری رو از url پاک کرد با js

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

کدی که نوشتید درسته، متوجه منظورتون نمیشم.
منظورتون اینه که آرایه تون چطور تغییر میکنه؟ این رو متوجه نمیشم که قراره ارایه چطوری تغییر کنه و کد بصورت پویا باشه.
الان آرایه سه تا عنصر داره و به درستی این سه تا به url اضافه میشن.

rabco
rabco
@rabco

تخصص: Full Stack developer

بعد از اینکه صفحه رفرش میشه از url یکی از عنصر ها به فرض RAB-1497747660 این مقدار حذف میشه اما بجای اینکه کلا از url حذف شه بجاش undefined قرار میگیره

https://roocket.ir/compare/RAB-6622382420/RAB-1497747661/RAB-1497747660

این url باید تبدیل به

https://roocket.ir/compare/RAB-6622382420/RAB-1497747661

بشه اما اینجوری میشه


https://roocket.ir/compare/RAB-6622382420/RAB-1497747661/undefined
میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

کد دکمه ها رو هم قرار بده، کدهای بخش حذف کردن رو قرار بده، اون رو هم ببینیم خوبه.
چون الان پیدا نیست که فرآیند کاریتون برای حذف به چه صورت هستش.

rabco
rabco
@rabco

تخصص: Full Stack developer

چیز خاصی نداره دیگه دکمه فقط ی رویداد onclicck رو داره

                  <i class="icofont-close" id="closeCompare" @Click="removeProductBySku ()"></i>

removeProductBySku : function (product,sku) {
                sku.map(function (value,index) {
                    if(value === product){
                        delete sku[index];
                    }
                });
                this.sku= [];

                let target ='';
                if (sku.length === 3){
                    target = `/compare/${sku[0]}/${sku[1]}/${sku[2]}`
                }else if(sku.length === 2){
                    target = `/compare/${sku[0]}/${sku[1]}`
                }else if(sku.length === 1){
                    target = `/compare/${sku[0]}`
                }else{
                    target = `/`
                }
                this.sku = sku;
                window.location = target;

            }
rabco
rabco
@rabco

تخصص: Full Stack developer

ممنونم از چه جایگزینی استفاده کنم ؟

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

از تابع splice استفاده کن. مثال:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 1);        // Removes the third element (Apple) of fruits
rabco
rabco
@rabco

تخصص: Full Stack developer

ممنونم حل شد

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

زنده باشید، چه خوب

چون کدهای بخش حذف عنصر رو در ابتدا قرار نداده بودید، مسئله دارای ابهام بودش. وقتی قرار دادید، مشخص شدش که اشکال کار چیه 👌

rabco
rabco
@rabco

تخصص: Full Stack developer

بابت راهنمایی عالیتون ممنون 🙏

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

خواهش میکنم، سر زنده باشید

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام