دوستان سلام
من ی ارایه دارم توی جاوا اسکریپت که قراره یک سری پارامتر هردفعه روی یک دکمه کلیک شد ازش حذف شه و به یه صفحه ریدایرکت بشه اما زمانی که ریدایرکت میشه 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
مشکل تون اینه که شما اومدید و از تابع delete برای حذف عناصر آرایه استفاده کردید.
این تابع باعث بوجود آوردن حفره هایی در آرایه شما میشه و مقدار undefined رو درونش قرار میده.
از تابع splice استفاده کن. مثال:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 1); // Removes the third element (Apple) of fruits
کد شما درسته، مشکلش چیه؟
کدی که نوشتی درست کار میکنه و هر سه مورد رو بوجود میاره:
https://roocket.ir/compare/RAB-6622382420/RAB-1497747660/RAB-1497747660
ته url رو نگاه کنید بعد از رفرش undefined اضافه شده زمانی که یکی از عنصر های ارایه حذف میشه این undefined نباید باشه
یه کاری کنید به جای اون عدد ایندکس از length استفاده کنید ببینید چه فرقی میکنه نتیجه
target = `/compare/${sku[sku.length - 1]}/${sku[sku.length - 2]}/${sku[sku.length - 3]}`
ببینید نتیجه فرق کرد، یا اینکه توی کنسول خطایی دارید
ممنونم خطایی توی کنسول ندارم نتیجه هم همونه هیچ راهی نداره که مقداری رو از url پاک کرد با js
کدی که نوشتید درسته، متوجه منظورتون نمیشم.
منظورتون اینه که آرایه تون چطور تغییر میکنه؟ این رو متوجه نمیشم که قراره ارایه چطوری تغییر کنه و کد بصورت پویا باشه.
الان آرایه سه تا عنصر داره و به درستی این سه تا به url اضافه میشن.
بعد از اینکه صفحه رفرش میشه از 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
کد دکمه ها رو هم قرار بده، کدهای بخش حذف کردن رو قرار بده، اون رو هم ببینیم خوبه.
چون الان پیدا نیست که فرآیند کاریتون برای حذف به چه صورت هستش.
چیز خاصی نداره دیگه دکمه فقط ی رویداد 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;
}
مشکل تون اینه که شما اومدید و از تابع delete برای حذف عناصر آرایه استفاده کردید.
این تابع باعث بوجود آوردن حفره هایی در آرایه شما میشه و مقدار undefined رو درونش قرار میده.
از تابع splice استفاده کن. مثال:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 1); // Removes the third element (Apple) of fruits
از تابع splice استفاده کن. مثال:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 1); // Removes the third element (Apple) of fruits
زنده باشید، چه خوب
چون کدهای بخش حذف عنصر رو در ابتدا قرار نداده بودید، مسئله دارای ابهام بودش. وقتی قرار دادید، مشخص شدش که اشکال کار چیه 👌
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟