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)

TyronNIKO 16.05.2017 17:59

Список при смене языка перестал изменятся
 
Добрый день! Дали в работу сайт с JS сгенерированом на CofeeScript 1.9.2
Я в JS не силен, сразу говорю.
После изменения структуры расположения страниц в каталоге перестал меняться язык выпадающего меню (в остальном никаких проблем).
Сам код исполняющий скрипт
dropStreetsRus =[большой массив адресов]

  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', ''));
    } else {
      setAttr(href.splice(href.indexOf('/', 8), 0, '/rus'));
    }
    update_list('#dropdown-group-street', dropStreets);	
  };

  update_list = function(identificator, updater) {
    $(identificator + ' ul li').remove();
    $.each(updater, function(index, updaterValue) {
      $(identificator + ' ul').append('<li class = "someClass">' + updaterValue + '</li>');
    });
  };

  $(document).on('click', '.btn-group .dropdown-menu li', function(e) {
    var btn, btnGroup;
    e.preventDefault();
    btnGroup = $(this).parents('.btn-group');
    if (!($(this).hasClass('disable'))) {
      btn = btnGroup.find('.btn-dropdown');
      btn.addClass('dropdown-selected');
      btn.text($(this).text());
      btn.append('<span class = "caret"> </span>');
      btn.removeClass('dropdown-alert');
      if (btnGroup.is('#dropdown-group-street')) {
        update_list('#dropdown-group-house', dropHouses[$('#dropdown-group-street li').index(this)]);
    }
  });


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

Nexus 17.05.2017 09:15

Находясь на странице сайта открой консоль, посмотри какие возникли ошибки.
В хроме клавиша F12 (вкладка «console»).

TyronNIKO 17.05.2017 11:53

ошибок нет... просто скрипт перестал выполнятся. а ошибки я найти не могу :-?

рони 17.05.2017 12:29

Цитата:

Сообщение от TyronNIKO
После изменения структуры расположения страниц

возможно дело в строках 28 - 32

TyronNIKO 17.05.2017 17:03

Цитата:

Сообщение от рони (Сообщение 452647)
возможно дело в строках 28 - 32

Эта функция меняет каталог с русской версией сайта на обычную.

setAttr(href.splice(href.indexOf('/', 8), 0, '/rus'));

единственное не понятно за что отвечает 8 и 0 тут?

Раньше страница со скриптом выводилась через /rus/internet.php
теперь вложенность файла поменялась на 2 каталога /rus/content/services/internet.php
а обычная версия находится в /content/services/internet.php
Тоесть скрипт срабатывает, но не меняет язык как указанно в 23 строке dropStreets = dropStreetsRus;

рони 17.05.2017 17:20

Цитата:

Сообщение от TyronNIKO
что отвечает 8

найти индекс наклонной черты в href , которая встретится после 8 символа ,
Цитата:

Сообщение от TyronNIKO
и 0 тут

ничего не удалять, и вставить в это место
Цитата:

Сообщение от TyronNIKO
'/rus'

-- новый url отправить в функцию setAttr

TyronNIKO 17.05.2017 17:28

Цитата:

Сообщение от рони (Сообщение 452672)
найти индекс наклонной черты в href , которая встретится после 8 символа , ничего не удалять, и вставить в это место -- новый url отправить в функцию setAttr

Значит тут все правильно. Просто переключатель языка на сайте.
Проблема то в том что и на обычной и на русской версии сайта скрипт выполняется без ошибок, но не переводит массив dropStreets = dropStreetsRus;
И как этого добиться без изменения самого скрипта я не знаю...

рони 17.05.2017 17:35

Цитата:

Сообщение от TyronNIKO
Значит тут все правильно.

это вам виднее
но попробуйте заменить '/rus' на '/rus/content'

TyronNIKO 17.05.2017 17:54

Цитата:

Сообщение от рони (Сообщение 452676)
это вам виднее
но попробуйте заменить '/rus' на '/rus/content'

Это я уже пробовал. Просто добавляет в адрес, при переключении языка, /rus/content и еще сверху докидывает каталог самого файла.
Получается /rus/content/сontent/services/internet.php

Может попробовать как-то привязать смену dropStreets на dropStreetsRus, например, при смене lang="ru" в шапке сайта?

TyronNIKO 18.05.2017 19:08

Все еще актуально. Могу дать полный скрипт. Может я не туда смотрю?


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