دوستان سلام
من ی ارایه دارم توی جاوا اسکریپت که قراره یک سری پارامتر هردفعه روی یک دکمه کلیک شد ازش حذف شه و به یه صفحه ریدایرکت بشه اما زمانی که ریدایرکت میشه 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 نباید باشه
شاید پاسخ شما همینجا باشد
ممنونم خطایی توی کنسول ندارم نتیجه هم همونه هیچ راهی نداره که مقداری رو از 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;
}ممنونم از چه جایگزینی استفاده کنم ؟
از تابع splice استفاده کن. مثال:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 1); // Removes the third element (Apple) of fruitsممنونم حل شد
زنده باشید، چه خوب
چون کدهای بخش حذف عنصر رو در ابتدا قرار نداده بودید، مسئله دارای ابهام بودش. وقتی قرار دادید، مشخص شدش که اشکال کار چیه 👌
بابت راهنمایی عالیتون ممنون 🙏
خواهش میکنم، سر زنده باشید