我想知道如果我使用 handlebar js 生成 html 元素,我如何能够通过 .replace()
更改元素数据。
例如我有这个 p 标签的 Angular 色,它通过 handlebar js 显示一行数据:
<p id="pre-region">{{region}}</p>
结果是
1,44
我想把它改成
1+44
如果你没有任何 handlebar js 的经验,那么考虑标签是
<p id="pre-region">1,44</p>
我应该如何从 1,44 更改为 1 +44?
更新 1
这里应该是我的问题的延伸。我将 pre-region 中的 HTML 元素传递给 href,以便通过 Ajax 更新我的网站。
在我将所有逗号转换为“+”后,API 检索到等于符号“+”的特殊字符“&B2”,然后 API 出错。
MYDOMAIN/path/getRegion?token&profileId=111&dataType=all®ion=1%2B4
这就是目前 API 的样子
MYDOMAIN/path/getRegion?token&profileId=111&dataType=all®ion=1+4
应该是解决方案
最佳答案
我对 handlebars.js 没有任何经验,但从我的 Angular 来看,您可以将代码放在 </body>
之前:
<script>
var node = document.getElementById('pre-region');
node.innerHTML = node.innerHTML.replace(',', '+');
</script>
我会检查 Handlebars js,以防它不起作用。
更新:
正如您在评论中提到的,如果您需要在 HTTP 请求/URL 中使用它,您可以使用 decodeURIComponent(yourstring)
处理字符串。 :
decodeURIComponent('1%2B44'); // you get '1+44'
阅读更多关于 decodeURIComponent()
的信息方法来自 this .在URL中,应该编码为region=1%2B44
在你的情况下;如果你想在你的 JavaScript 代码中使用它或者在网页中显示它,它应该被解码。
更新 1
当字符串用作 HTTP 请求参数的一部分时,您应该对其进行编码。因此,如果 URL 看起来不错:
MYDOMAIN/path/getRegion?token&profileId=111&dataType=all®ion=1%2B4
您需要做的是在您的服务器端解码字符串。我假设您控制着服务器端。如果你使用的是 Node.js,你可以只使用 decodeURIComponent()
解码参数的方法。如果您使用 Python 或 PHP 作为服务器语言,它应该类似于 decodeURIComponent()
。用那种语言。
更新 2
上面的解决方案只是将第一个逗号替换为+
.要解决这个问题,只需使用:
<script>
var node = document.getElementById('pre-region');
node.innerHTML = node.innerHTML.replace(/,/g, '+');
// Regular Expression is used here, 'g' for global search.
</script>
PHP 有一个 replaceAll()
方法,所以我们可以将该方法添加到 String.prototype
如果你愿意,请像下面这样:
<script>
String.prototype.replaceAll = function(search, replacement) {
var target = this;
return target.split(search).join(replacement);
}
// Another method to replace all occasions using `split` and `join`.
</script>
关于javascript - handlebar js生成apple .replace() Html元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36928464/