JaxAdam
@JaxAdam
Junior Full-Stack Developer

Как заставить заработать .attr() в jQuery?

Добрый день, форумчане! Реализовываю мультиязычный сайт без обращения к серверу. Применял ранее на нескольких сайтах, но на данном сайте почему-то функция .attr() отказывается работать.

<div class="lang-selector">
    <div class="language"><img src="{THEME}/images/ru.png"><p class="lang-name">Русский</p></div>
    <div class="language"><img src="{THEME}/images/kz.png"><p class="lang-name">Қазақша</p></div>
</div>


По задумке: при нажатии на div с классом language у тега html должен меняться атрибут lang в соответствии с выбранным языком(реализовано в switch). При загрузке страницы я применял технологию куки, для выгрузки выбранного ранее языка. В конце этого скрипта поставил проверку. Если куки существует то задать атрибуту lang у html значение cookie. Если посетитель зашел первый раз то cookie нету, значит по дефолту lang="ru".

$(document).ready(function() {
    function getCookie(name) {
        var matches = document.cookie.match(new RegExp(
            "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
        ));
        return matches ? decodeURIComponent(matches[1]) : undefined;
    }   
    
    function setCookie(e){
        document.cookie = 'lang=' + e;
    }
    
    $('.language').on('click', function() {
        $('.language').removeClass("active-lang");
        $(this).addClass("active-lang");
        var stringOfLang = $(this).find('p').html();
        var html = $('html');
        if(stringOfLang === 'Қазақша'){
            html.removeAttr('lang');
            html.attr('lang', 'kz');
            setCookie('kz');
        }else if(stringOfLang === 'Русский'){
            html.removeAttr('lang');
            html.attr('lang', 'ru');
            setCookie('ru');
        }else{
            html.removeAttr('lang');
            html.attr('lang', 'ru');
            setCookie('ru');
        }
    });
    
    var cookie = getCookie('lang');
    if(cookie){
        $('html').attr('lang', cookie);
    }else{
        $('html').attr('lang', 'ru');
    }
    
    console.log(cookie);
    
});


Проблема: при загрузке страницы тег html отображается так:
<html>

т.е. без атрибута:( Помогите, плиз, просветлители))
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы