Измените любое вхождение (внутри <body>) ключа в объекте на значение ключа - PullRequest
1 голос
/ 17 апреля 2019

Я просто хочу перевести некоторые слова во всем мире. Мои переводы находятся внутри объекта с ключом в качестве исходного слова и значением в качестве перевода. Однако я не могу заставить свою функцию работать, чего мне не хватает?

jQuery(document).ready(function() {
if (window.location.href.indexOf("sv") > -1) {
  var translations = {
    'All': 'alla',
    'Filter Members': 'Filtrera medlemar',
  }

  for (var key in translations) {
    if (translations.hasOwnProperty(key)) {
      console.log(key + " -> " + translations[key]);

      $allItems = jQuery("body *").children();

      $allItems.each(function() {
        $this = jQuery(this);
        $this.html().replace(key, translations[key]);
      });
    }
  }

1 Ответ

0 голосов
/ 17 апреля 2019

Вам необходимо передать новое значение методу html().Строки являются неизменяемыми, вызывающая функция на них не меняет исходную строку.

Вторая проблема, которую я вижу, заключается в том, что вы объявляете глобальные переменные.Вы должны использовать let или const

jQuery(document).ready(function () {
    if(window.location.href.indexOf("sv") > -1) {
      //CUSTOM TRANSLATIONS

     var translations = {
          'All' : 'alla',
          'Filter Members' : 'Filtrera medlemar',
     }



    for (var key in translations) {
    if (translations.hasOwnProperty(key)) {
        console.log(key + " -> " + translations[key]);

        const $allItems =  jQuery("body *").children();

        $allItems.each( function() {
            const $this = jQuery(this);
                $this.html($this.html().replace(key, translations[key]));

        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...