Пустая страница Javascript в Интернете

#javascript #html #jquery #css #multilingual

#javascript #HTML #jquery #css #многоязычный

Вопрос:

Я хотел сделать свою веб-страницу многоязычной, поэтому я использовал следующий js-код:

 let langs = ['en', 'it', 'sp', 'sv', 'de', 'pt', 'nl'];
let lang = 'en';
setLangStyles(lang);

function setStyles(styles) {
  var elementId = '__lang_styles';
  var element = document.getElementById(elementId);
  if (element) {
    element.remove();
  }

  let style = document.createElement('style');
  style.id = elementId;
  style.type = 'text/css';

  if (style.styleSheet) {
    style.styleSheet.cssText = styles;
  } else {
    style.appendChild(document.createTextNode(styles));
  }
  document.getElementsByTagName('head')[0].appendChild(style);
}

function setLang(lang) {
  setLangStyles(lang);
}

function setLangStyles(lang) {
  let styles = langs
    .filter(function (l) {
      return l != lang;
    })
    .map(function (l) {
      return ':lang('  l  ') { display: none; }';
    })
    .join(' ');

  setStyles(styles);
}
  

Я назвал это «lang.js » и я пометил его в своем HTML-файле таким образом:

 <!-- jquery -->
<script src="js/jquery-2.1.4.min.js"></script>
<!-- Bootstrap -->
<script src="js/bootstrap.min.js"></script>
<script src="js/scripts.js"></script>
<script src="js/lang.js"></script>
  

Локально он работает отлично, но когда он находится на сервере, он вообще не открывает веб-страницу, все, что я вижу, это пустая страница.

Я также попытался записать его внутри html с помощью script> tag, это тоже не сработало.

На вкладке network инструментов разработчика jquery-2.1.4.min.js файл и файлы начальной загрузки отображаются как статус 200.

На консоли нет ошибок

Кто-нибудь может помочь, пожалуйста?

Заранее благодарю вас

Комментарии:

1. можете ли вы поделиться скриншотом вкладки «Сеть»?

2. Есть ли ошибка, отображаемая в консоли DevTools?

3. Только эти: DevTools не удалось загрузить исходную карту: не удалось загрузить содержимое для chrome-extension://ickdpignpmjcahkjfbmfljhiglmcmchn/main.js.map: Ошибка HTTP: код состояния 404, net::ERR_UNKNOWN_URL_SCHEME DevTools не удалось загрузить исходную карту: не удалось загрузить содержимое для meladwi.it/2/css/bootstrap .min.css.map : Ошибка HTTP: код состояния 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE

4. Веб-страница: www.meladwi.it/2/4.html

5. : псевдокласс lang выделяет каждый элемент на странице и скрывает его, см. developer.mozilla.org/en-US/docs/Web/CSS/:lang я

Ответ №1:

Вот моя версия вашей функции. Он перебирает массив языков, затем захватывает один queryselectorAll из соответствующих элементов языка. Если переданный язык соответствует элементу массива в цикле, для отображения устанавливается значение block, в противном случае для него устанавливается значение none.

 langs = ["en", "es"];

function setLangStyles(lang) {
  for (z = 0; z < langs.length; z  ) {
    l = langs[z]
    objs = document.querySelectorAll(":lang("   l   ")");
    objs.forEach(function(el) {
      el.style.display = (l == lang) ? "block" : "none";
    });
  }
}

btns = document.querySelectorAll("button");

btns.forEach(function(e){
   e.addEventListener("click",function(ev){
      setLangStyles(ev.target.dataset.lang);
   });
});

setLangStyles("es");  
 <div lang="en">EN</div>
<div lang="es">ES</div>
<button type="button" data-lang="es">View ES</button>
<button type="button" data-lang="en">View EN</button>  

Комментарии:

1. Спасибо. Это действительно работает. Но проблема в том, что если я не нажму одну из кнопок, она покажет все языки. Как я могу установить язык по умолчанию

2. @MahmudElAdwi, я обновил свой ответ, но в основном просто вызываю setLangStyles("es"); where es — язык по умолчанию.

3. Просто удивительно, что вы полностью спасли мой день, я желаю вам всего наилучшего