javascript - 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]));
}
}
}
解决方案
似乎您的正文标签中有脚本,因此您的脚本遇到了错误。尝试在所有 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>
推荐阅读
- asp.net-mvc - Kendo DropDownListFor 不会超出引导列
- c# - 执行任务并等待返回 whitout 阻塞 GUI
- marklogic - MarkLogic - 通过 REST API 调用自定义端点时出现“无法读取模块”错误
- sql-server - OLAP Cube 列属性值
- python - datetime.timestamp() 丢失时间(一小时)
- python - H3lp 高中生与 Python 循环
- alexa - 无法调试“请求的技能响应有问题”
- django - Django Admin Inline FileField 链接在新选项卡中打开
- sql-server - 我们如何更改 SQL Server 中的 msdb 值?
- casting - Kotlin 的铸造成本有多高?