Javascript 将key-in对象的任何出现(在<;body>;)更改为key-value

Javascript 将key-in对象的任何出现(在<;body>;)更改为key-value,javascript,jquery,object,for-loop,key-value,Javascript,Jquery,Object,For Loop,Key Value,我只是想把一些单词翻译成全球通用的。我的翻译是在一个对象中,键是原始单词,值是翻译。 然而,我不能让我的功能工作,我缺少什么 jQuery(文档).ready(函数(){ if(window.location.href.indexOf(“sv”)>-1){ 变量转换={ “全部”:“阿拉”, “筛选器成员”:“Filterra medlemar”, } for(翻译中的var键){ if(translations.hasOwnProperty(key)){ console.log(key+“->

我只是想把一些单词翻译成全球通用的。我的翻译是在一个对象中,键是原始单词,值是翻译。 然而,我不能让我的功能工作,我缺少什么

jQuery(文档).ready(函数(){
if(window.location.href.indexOf(“sv”)>-1){
变量转换={
“全部”:“阿拉”,
“筛选器成员”:“Filterra medlemar”,
}
for(翻译中的var键){
if(translations.hasOwnProperty(key)){
console.log(key+“->”+翻译[key]);
$allItems=jQuery(“body*”).children();
$allItems.each(函数(){
$this=jQuery(this);
$this.html().replace(key,translations[key]);
});
}
}

您需要将新值传递给
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]));

        });
    }
}

您需要将新值传递给
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]));

        });
    }
}

jQuery(“body*”).children()
是一种选择节点的奇怪方式……如果您想要所有节点,只需使用
jQuery(“body*”)
。此外,您也可以执行
jQuery(“body”).html(jQuery(“body”).html().replace(key,translations[key]))
…这样您就不需要遍历文档中的每个节点。但是要小心使用这些翻译键;如果其中一个是“span”或“class”或与HTML元素或属性名相同,则会导致一些问题…可能重复
jQuery(“body*”).children()
是一种选择节点的奇怪方式……如果您想要所有节点,只需使用
jQuery(“body*”)
。此外,您也可以执行
jQuery(“body”).html(jQuery(“body”).html().replace(key,translations[key]))
…那么你就不需要遍历文档中的每个节点了。不过要小心那些翻译键;如果其中一个是“span”或“class”或与HTML元素或属性名相同,你会导致一些问题…我应该将
var translations={}
更改为
let translations={}
?我是否应该将
var translations={}
更改为
let translations={}