首页 > 解决方案 > JQuery/Javascript:新的 RegExp() 停止循环

问题描述

我正在制作一个翻译功能,我想轻松地在一个对象内添加翻译,然后在内部全局更改每个翻译$("body").html(),问题是,当我new RegExp()在我的 for 循环中使用它时,它会在第一次迭代后切断循环。

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]);
            $body = jQuery("body");
            replaceThis = new RegExp(key, "g");

            alert(replaceThis);

            $body.html($body.html().replace(replaceThis, translations[key]));

        }
    }

}

标签: javascriptjqueryregexfor-loop

解决方案


似乎您的正文标签中有脚本,因此您的脚本遇到了错误。尝试在所有 html 上添加一个 html 容器元素,然后对该容器元素而不是 body 执行操作。

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

for (var key in translations) {
  if (translations.hasOwnProperty(key)) {

    //console.log(key + " -> " + translations[key]);
    $container = jQuery(".container");
    replaceThis = new RegExp(key, "g");

    //alert(replaceThis);

    $container.html($container.html().replace(replaceThis, translations[key]));

  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="container">
  <div>All</div>
  <div>Filter Members</div>
  <div>All</div>
  <div>Filter Members</div>
</div>


推荐阅读