首页 > 解决方案 > 如果未单击链接,则使用 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);
  }
});

标签: jquery

解决方案


推荐阅读