Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过字符串定位对象中的值以转换页面上的元素_Javascript_Object - Fatal编程技术网

Javascript 如何通过字符串定位对象中的值以转换页面上的元素

Javascript 如何通过字符串定位对象中的值以转换页面上的元素,javascript,object,Javascript,Object,我有一个物体,假设它看起来像这样 { “exportRoot”:{ “翻译”:{ “导航栏”:{ “navbarLink1”:“开始”, “navbarLink2”:“能量”, “navbarLink3”:“温暖”, “navbarLink4”:“水”, “navbarLink5”:“配置” } } } } 我有一组元素,其中包含一类lang_text,它将在函数中迭代。我检查当前正在查看的元素的id。这看起来总是这样的translate.navbar.navbarLink1。现在我想说,el

我有一个物体,假设它看起来像这样

{
“exportRoot”:{
“翻译”:{
“导航栏”:{
“navbarLink1”:“开始”,
“navbarLink2”:“能量”,
“navbarLink3”:“温暖”,
“navbarLink4”:“水”,
“navbarLink5”:“配置”
}
}
}
}
我有一组元素,其中包含一类
lang_text
,它将在函数中迭代。我检查当前正在查看的元素的id。这看起来总是这样的
translate.navbar.navbarLink1
。现在我想说,
element.innerHTML=exportRoot.id
。这似乎不起作用,我认为这可能与本例中的id是字符串这一事实有关

let ele=document.getElementsByClassName('lang_text');
for(设i=0;i

有人知道我如何才能最好地将元素与对象中的正确键进行匹配吗?

这是您描述的简单示例

translate()

在循环中,我读取此属性内容,并将其拆分为下一个键数组,并将它们提供给
searchTranslations()
函数

searchTranslations()
函数中,我正在检查key是否是一个对象,如果是,我将再次调用此函数,但这次在这个对象上,要查找的键少了一个。
若项目不是一个对象,我将返回它,假设它是我需要的字符串

const translationTable={
翻译:{
导航栏:{
navbarLink1:“开始”,
navbarLink2:“能量”,
navbarLink3:“温暖”,
navbarLink4:“水”,
导航栏链接5:“配置”
}
}
}
const searchTranslations=(translationTable,translationKeyArray)=>{
常量索引=translationKeyArray[0];
if(typeof(translationTable[index])=='object'){
translationKeyArray.shift();
返回searchTranslations(translationTable[index],translationKeyArray);
}
返回translationTable[索引];
};
常量翻译=()=>{
document.querySelectorAll(“[translate key]”)。forEach(element=>{
常量translateKeyArray=element.getAttribute('translate-key').split('.');
element.innerText=searchTranslations(translationTable,translateKeyArray);
});
};
翻译()


ele[i].innerHTML=exportRoot.translate.navbar.currentName
?您可以在点上拆分id,并使用索引符号钻取exportRoot。您也可以考虑使用本地化的框架,这非常好,非常感谢!我花了一些时间才弄明白它是如何找到匹配项的,但索引不必是数字