jquery - 如果未单击链接,则使用 var max 6 循环并保留空值
问题描述
使用下面的代码,每次点击都会添加 url 链接。
但是,需要限制为最多 6 个网址。URL也必须最初像 - test.html?url1=&url2=&url3=&url4=&url5=&url6
如果用户点击了 2 个项目,
test.html?url1=google.com&url2=yahoo.com&url3=&url4=&url5=&url6
剩余的 url3、url4、url5、url6 - 将是空值。必须将这些 url 6 参数作为 POST 脚本调用传递给后端。
谢谢
JS:
var offerListing = [];
var favouriteOfferCookie = $.cookie('favouriteOffer');
var $cookieData;
if(!favouriteOfferCookie) {
$cookieData = $.cookie('favouriteOffer', JSON.stringify(offerListing), { path: '/', expires: 7});
}
offerListing = $.parseJSON($.cookie('favouriteOffer'));
$('.favicon-wrapper').on('click', function(){
if($(this).find('.favicon').hasClass('selected')){
$(this).find('.favicon').removeClass('selected');
console.log('Remove');
var $offerLink = $(this).closest('.offer-list-item-wrapper').attr('href');
offerListing = offerListing.filter((ol) => ol.link != $offerLink);
} else{
$(this).find('.favicon').addClass('selected');
var $offerLink = $(this).closest('.offer-list-item-wrapper').attr('href');
//Check if link exists before adding
var linkExists = offerListing.find((ol) => {
return ol.link == $offerLink
});
if (linkExists) {
return;
}
offerListing.unshift(
{ 'link': $offerLink}
);
$.cookie('favouriteOffer', JSON.stringify(offerListing), { path: '/', expires: 7});
offerListing = offerListing.slice(0, 6);
console.log('Favourite Offer', offerListing);
// format url array to string in "url1=https://url.com" format
const formattedUrlArr = offerListing.map((elem, i) => `url${i + 1}=${elem.link}`);
// join to create new url
const newUrl = `${baseUrl}?${formattedUrlArr.join('&')}`;
console.log('newUrl: ' +newUrl);
}
});
解决方案
推荐阅读
- angular - NGXS 中的 DISPATCH 是什么意思?
- java - Spring WebClient 在 Tomcat 上留下开放会话
- python - 计算Python中另一个列表中每个嵌套列表的出现次数
- css - 引导按钮不会显示内联块
- reactjs - 如何在 React 中将函数设置为 useState 变量?
- r - 将数据透视表导出到 R markdown(用于 word 中的最终输出)
- java - 如何使用java动态计算模型中空字段的计数
- java - 在 Mac 上的 mvn 构建期间,Java 测试中的环境变量为空
- youtube-dl - 使用 youtube-dl 嵌入缩略图时是否可以不更改文件创建日期?
- algorithm - 链表:删除节点