Freddy
Freddy

Reputation: 867

Set cookie based on data attribute

I want to set a cookie with the value of the data attribute defined to an anchor link. Example:

Use case:

Setting cookie: setCookie('language-selected','data-lang_here',7);

How would I go about this?

Upvotes: 0

Views: 935

Answers (2)

Abhishek Raj
Abhishek Raj

Reputation: 490

html

<a href="#" data-lang="de">Deutsch</a>
<a href="#" data-lang="fr">Français</a>

js

let anchors = document.querySelectorAll('a');
for (let anchor of anchors) {
    anchor.addEventListener("click", (event) => {
        let langValue = event.target.getAttribute('data-lang');
        setCookie("language-selected", langValue, 1); // expiration time is 1 day
    })
}


function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

Upvotes: 0

Dmitry S.
Dmitry S.

Reputation: 1676

You can use jQuery-cookie plugin. Use $.cookie('lang-selected') to get the cookie.

HTML

    <a href="#" data-lang="de">Deutsch</a>
    <a href="#" data-lang="fr">Français</a>

Jquery

    $("a").click(function($event){
      $event.preventDefault();
      let lang = $($event.target).attr('data-lang');
      $.cookie('language-selected', lang, {expires : 30});
     });

Upvotes: 0

Related Questions