Javascript JQuery在呈现之后搜索dom元素,并用相应的值替换键

Javascript JQuery在呈现之后搜索dom元素,并用相应的值替换键,javascript,jquery,Javascript,Jquery,我正在尝试在我正在开发的web应用程序上应用我自己的本地化方法。 知道我正在使用JQuery 2.2.0,没有任何其他框架或第三方。我需要在纯html代码中编写一些表达式,以便: ex-1: <span>#{{lang.details}}</span> ex-2: <button value='#{{lang.save}}'> My app.js代码: var lang = en; // jquery load en json file // search

我正在尝试在我正在开发的web应用程序上应用我自己的本地化方法。 知道我正在使用JQuery 2.2.0,没有任何其他框架或第三方。我需要在纯html代码中编写一些表达式,以便:

ex-1:
<span>#{{lang.details}}</span>

ex-2:
<button value='#{{lang.save}}'>
My app.js代码:

var lang = en;
// jquery load en json file
// search the dom elements and replace the key surrounded 
// by '#{{ }}' with its corresponding value from the bundle
在JavaScript或JQuery中查找这些元素的最佳方法是什么。我无法通过第三方找到其他解决方案?

在页面加载后用JavaScript变量替换HTML


基本上,它所做的是在页面加载后,搜索模式
{{variable}
然后用变量的值替换匹配项。

类似把手或胡子的东西?我认为regexIs
lang
是唯一可以通过这种方式访问的变量?我这样问是因为我想避免在我的回答中使用
eval()
,这样它会更安全。我希望你觉得这有帮助!如果有任何方法可以改进这个答案,请毫不犹豫地说出来。创建这个答案对我来说是一次学习经历。我注意到在整个文档上运行replace会重新加载文档。因此,我让它检查一个变量,以确保它不会永远运行。有没有办法在不重新加载文档的情况下处理该问题?最好的解决方案是用仍然包含所有模式的最窄选择器替换
document.documentElement
部分
document.body
可能是个好地方。最不包容的东西。只有当javascript代码本身也在它搜索的部分中时,才会发生重新加载问题。然后,您可以删除所有的
donereplaceing
内容,也可以将javascript放在一个外部文件中,这样它就不会被重载中断。
var lang = en;
// jquery load en json file
// search the dom elements and replace the key surrounded 
// by '#{{ }}' with its corresponding value from the bundle
var doneReplacing = false;
$(function() {
    if (doneReplacing === false) {
        $(document.documentElement).html(function(index, content) {
            return content.replace(/#{{([^}]*)}}/g, function(match, $1) {
                return eval($1);
            });
        });
        doneReplacing = true;
    }
});