Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Список при смене языка перестал изменятся (https://javascript.ru/forum/dom-window/68904-spisok-pri-smene-yazyka-perestal-izmenyatsya.html)

рони 19.05.2017 00:06

Цитата:

Сообщение от TyronNIKO
Выдает такое:

значит неправильно заменили -- либо } лишняя либо не хватает.
замените блок целиком на это
/*СМЕНА ЯЗЫКА*/
  changeLanguage = function() {
    var OthBtn, SafBtn, changeDropDowns, href, setAttr;
    SafBtn = $("#Safari-lang");
    OthBtn = $("#Other-lang");
    href = $(location).attr('href');

    $.getScript("/assets/js/min/detect-min.js", function() {
      var user;
      user = detect.parse(navigator.userAgent);
      if (user.browser.family === 'Safari') {
        $('#Safari-lang').addClass('is-active');
        return $('.experience').addClass('is-Safari');
      } else {
        return $('#Other-lang').addClass('is-active');
      }
    });

    setAttr = function(href) {
      SafBtn.attr('href', href);
      return OthBtn.attr('href', href);
    };

    changeDropDowns = function() {
      dropStreets = dropStreetsRus;
      dropTrafficGeneral = dropTrafficGeneralRus;
      dropTrafficK1 = dropTrafficK1Rus;
      return dropTrafficK2 = dropTrafficK2Rus;
    };

    if (href.indexOf('/rus') > -1) {
      setAttr(href.replace('/rus/', '/'));
      update_list('#dropdown-group-street', dropStreets);
    } else {
      setAttr(href.splice(href.indexOf('/', 8), 0, '/rus'));
      update_list('#dropdown-group-street', dropStreetsRus);
    }

  };
  /*END-СМЕНА ЯЗЫКА*/

Nexus 19.05.2017 08:23

Один из случаев, когда без ящика не разберешь, как программист хотел сделать, чтобы это работало))
Можно после объявления массивов проверить присутствие '/rus/' в адресной строке, если фраза присутствует, то все массивы с данными на оригинальном языке перезаписываешь массивами RUS, в противном случае наоборот.
Этот костыль наверняка поможет, однако это костыль.

UPD. Не понимаю почему и я и Рони решили, что массивы с русскими наименованиями должны размещаться в блоке else условия, ведь условие читается так: «если в строке адреса присутствует "/rus" то...»
Попробуй сделать так:
if (href.indexOf('/rus') > -1) {
  setAttr(href.replace('/rus/', '/'));
  changeDropDowns();
} else {
  setAttr(href.splice(href.indexOf('/', 8), 0, '/rus'));
}

TyronNIKO 19.05.2017 12:47

Цитата:

Сообщение от Nexus (Сообщение 452800)
Один из случаев, когда без ящика не разберешь, как программист хотел сделать, чтобы это работало))
Можно после объявления массивов проверить присутствие '/rus/' в адресной строке, если фраза присутствует, то все массивы с данными на оригинальном языке перезаписываешь массивами RUS, в противном случае наоборот.
Этот костыль наверняка поможет, однако это костыль.

UPD. Не понимаю почему и я и Рони решили, что массивы с русскими наименованиями должны размещаться в блоке else условия, ведь условие читается так: «если в строке адреса присутствует "/rus" то...»
Попробуй сделать так:
if (href.indexOf('/rus') > -1) {
  setAttr(href.replace('/rus/', '/'));
  changeDropDowns();
} else {
  setAttr(href.splice(href.indexOf('/', 8), 0, '/rus'));
}

Эврика! заработало!
Я действительно через-чур конкретно "заменял"... в конце ведь должно выполнятся update_list('#dropdown-group-street', dropStreets); ...и уже после него должен стоять }; а я лепил прямо после указанной части! В общем все работает! Огромное спасибо за помощь!


Часовой пояс GMT +3, время: 15:43.