javascript - 将 javascript 变量放置在 html 中 - 有几种方法,该选择哪一种?

标签 javascript html

我在一些 html 上,我必须根据用户选择的语言放置一些变量。由于多种原因,我只能在客户端执行此操作。

我已经想出了不同的方法来做到这一点,现在我问自己哪种方法是最好的方法(在这种情况下最好的方法意味着“最快”,“最安全”等等)。

变量存储在如下所示的 json 文件中:

lang = {
"nav" : {
    "categories" : {
        "header" : {
            "de" : "Kategorien",
            "en" : "Categories"
        },
    },
    "search" : {
        "placeholder" : {
            "de" : "Suchen nach...",
            "en" : "search for..."
        },
        "button" : {
            "de" : "Finden",
            "en" : "Find"
        },
    },
},
"benefits" : {
    "first" : {
        "title" : {
            "de" : "irgendwas",
            "en" : "something"
        },
        "content" : {
            "de" : "blablabla",
            "en" : "blablabla in english"
        },
    },
    "second" : {
        "title" : {
            "de" : "irgendwas anderes",
            "en" : "something else"
        },
        "content" : {
            "de" : "noch mehr blablabla",
            "en" : "some more blablabla in english"
        },
    },
},
}

现在我可以使用小脚本直接将变量放置在它们应该在的任何地方,例如:

<script>document.write(lang.nav.search.button[language])</script>

在另一边我可以放置一个而不是脚本

<span id="lang.nav.search.button"></span>

或任何其他标签,并有一个外部 javascript,我可以在其中替换/追加/前置或其他内容。

为了让它变得更复杂一点,在某些情况下,我必须根据所选语言设置元素的属性,并且因为不可能在另一个标记内直接执行上面的脚本来设置属性(或者有什么方法可以做到这一点?)我使用一个函数来获取DOM中当前位置的父元素

function scriptparent() {
  var scripts = document.getElementsByTagName('script');
  return scripts[scripts.length - 1].parentNode;
};

并像这样设置属性:

<div class="form-group">
    <input type="text" class="form-control">
    <script>scriptparent().firstElementChild.placeholder = lang.nav.search.placeholder[language];</script>
</div>

完成我的项目后,将会有 50 - 100 个变量,所以,有什么建议更喜欢哪种方式吗?或者也许有人有更好的方法来处理它?<​​/p>

提前致谢!

最佳答案

您可以使用http://i18next.com/翻译库。将其与模板库、 mustache 、 Handlebars 或类似的东西一起使用。

关于javascript - 将 javascript 变量放置在 html 中 - 有几种方法,该选择哪一种?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30224698/

相关文章:

php - CKEDITOR 和 javascript 函数出现问题

javascript - 使用chart.js绘制图形

html - 为什么按钮的文字没有居中对齐?

html - 用于更大显示器的 CSS

javascript - AngularJS 如何使用过滤器延迟加载图像

javascript - ES2015 类是 "not autobind"吗?

javascript - 所有浏览器什么时候开始支持 String.replace(regexp, replacement_function)?

javascript - 如何使用按钮 onclick 隐藏一个 div 并显示另一个 div?

html - 设置 OpenLayers map 容器的尺寸

asp.net-mvc-3 - 在 ASP.NET MVC 3 中应用数据注释时,你打算如何使用提示、描述、排序