javascript - handlebar js生成apple .replace() Html元素

标签 javascript html handlebars.js

我想知道如果我使用 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&region=1%2B4

这就是目前 API 的样子

MYDOMAIN/path/getRegion?token&profileId=111&dataType=all&region=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&region=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/

相关文章:

javascript - 如何将线性渐变应用于 css 中的元素?

mysql - 如何使用 Handlebars 在 html 中显示图像来自 MYSQL 作为 blob

macos - Coda (OSX) 中的 .hbs 语法高亮显示

ember.js - 创建路径助手,将哈希传递给 Handlebars 助手或连接字符串

Javascript:如何更新仪表图表的最大值?

css - 嵌套两个具有自动高度的 div 时,如何让较小的 div 贴在顶部?

javascript - HTML 拖放 - 当可拖动元素未放置在有效的放置代理上时接收事件

javascript - 在 ionic 3 的 map 上添加多个标记

javascript - 如果工具提示有长文本箭头向下( Bootstrap )

JavaScript 文件 - 未找到 404 - CodeIgniter - .htaccess