@Mikhail_Litvinov
начинающий web-разработчик

Как исправить срабатывание при загрузке страницы на JS?

Всем привет! Есть небольшая проблема:
Создаю сайт с переводом на несколько языков через js, есть две функции: определение страны и языка пользователя и автоматический клик по элементам. При загрузке страницы по какой-то причине происходит только один клик - по языку, но нет клика по выбранной стране.

Собственно, проверка языка и страны:
var userlang = window.navigator.language || navigator.userLanguage;
console.log(userlang)
if ( userlang  == "ru" || userlang == "ru-RU") {
    RU.classList.add ("defaultOpen");
}
if ( userlang  == "cs" ) {
    CZ.classList.add ("defaultOpen");
}
else {
    EN.classList.add ("defaultOpen");
}
(document).ready(function() {
    if (YMaps.location) // Проверяем, доступна ли геопозиция
    { 
        
        console.log(YMaps.location.country);
        if (YMaps.location.country == "Россия" || YMaps.location.country == "country") {
            rus.classList.add("defaultOpen");
        } 

        if (YMaps.location.country == "Чехия" || YMaps.location.country == "country") {
            cze.classList.add("defaultOpen");
        }

        if (YMaps.location.country == "США" || YMaps.location.country == "country") {
            usa.classList.add("defaultOpen");
        }

        else {
            gbr.classList.add("defaultOpen");
        }
    } 
    else
        alert("Пожалуйста, разрешите доступ к использованию Вашей геопозиции!");
});


функции перевода и выбора страны:
function changeLanguage(evt, language) {

    var i;
    var langBtns = document.getElementsByClassName("lang-btn");

    for (i = 0; i < langBtns.length; i++) {
        langBtns[i].className = langBtns[i].className.replace(" active", "");

    }

    evt.currentTarget.className += " active";

    if (RU.classList.contains("active")) {
        LangAbb.textContent = "RU";
        lang.textContent = "Язык:";
        country.innerHTML = "Страна:";
        changeButtonsRU();
        if (usa.classList.contains("active")) {
            countryName.innerHTML = "США (&#36;)";
        }
        if (gbr.classList.contains("active")) {
            countryName.innerHTML = "Великобритания (&#8364;)";
        }
        if (cze.classList.contains("active")) {
            countryName.innerHTML = "Чешская республика (Kč)";
        }
        if (rus.classList.contains("active")) {
            countryName.innerHTML = "Россия (&#8381;)";
        }
    }
    //тоже самое, но на другом языке//
   function changeCountry(evt, country) {
    var i;
    var countryBtns = document.getElementsByClassName("country-btn");

    for (i = 0; i < countryBtns.length; i++) {
        countryBtns[i].className = countryBtns[i].className.replace(" active", "");

    }
    evt.currentTarget.className += " active";
    selectedCountry();
}
function selectedCountry() {
if (rus.classList.contains("active")) {
        LangAbb.textContent = "RU";
        lang.textContent = "Язык:";
        country.innerHTML = "Страна:";
        changeButtonsRU();
        if (rus.classList.contains("active")) {
            countryName.innerHTML = "Россия (&#8381;)";
        }
    }
}
function changeButtonsRU() {
    //text
    chooseText.innerHTML = "Выберите страну";
    europe.innerHTML = "Европа";
    america.innerHTML = "Америка";
    asia.innerHTML = "Азия";
    //country buttons 
    rus.innerHTML = "Россия";
    cze.innerHTML = "Чехия";
    usa.innerHTML = "США";
    //nav buttons
    homeText.innerHTML = "Главная";
    aboutText.innerHTML = "О нас";
    galleryText.innerHTML = "Галерея";
    womenText.innerHTML = "Для женщин";
    menText.innerHTML = "Для мужчин";
    childrenText.innerHTML = "Десткое";
    blogText.innerHTML = "Новости";
}


и, собственно, функция клика при загрузке:
let defaultOpenButtons = document.querySelectorAll(".defaultOpen");
for (let index = defaultOpenButtons.length - 1; index >= 0; index--) {
    const defaultOpenButton = defaultOpenButtons[index];
    defaultOpenButton.click(); 
}


как здесь исправить, чтобы клик происходил по двум элементам? Весь остальной код.
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
@Tendor
Кликает раньше чем document.ready
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы