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

apple .replace() Html element generate by handlebar js

我想知道如果我使用 handlebar js 生成 html 元素,我如何才能通过 .replace() 更改元素数据。

比如我有这个 p 标签的角色,它通过 handlebar js 显示一行数据:

<p id="pre-region">{{region}}</p>

结果是

1,44

我想将其更改为

1+44

如果你没有任何车把 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 没有任何经验,但从我的角度来看,您可以将代码放在 </body> 之前:

<script>
  var node = document.getElementById('pre-region');
  node.innerHTML = node.innerHTML.replace(',', '+');
</script>

我会检查车把 js,以防它不起作用。

更新: 正如您在评论中提到的,如果您需要在 HTTP request/URL 中使用它,您可以使用 decodeURIComponent(yourstring):

处理字符串
decodeURIComponent('1%2B44'); // you get '1+44'

阅读 this 中关于 decodeURIComponent() 方法的更多信息。在 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>

好吧,这是我对堆栈溢出的第一个回答,所以我对这整件事很陌生,但我们开始吧:

您可以在 handlebars 之后运行的另一个 js 文件中尝试此代码:

var pre = $('#pre-region'); // defines a variabe for the element (same as
                            // document.getElementById('pre-region'))
var retrievedRegion = pre.innerHTML;
var splitten = retrievedRegion.split(',');
var concatenated = parseInt(split[0]) + parseInt(split[1])
retrievedRegion.innerHTML = "'" + concatenated) + "'";

或使用 replace():

retrievedRegion.replace(',','+')