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®ion=1%2B4
这就是 API 目前的样子
MYDOMAIN/path/getRegion?token&profileId=111&dataType=all®ion=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®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>
好吧,这是我对堆栈溢出的第一个回答,所以我对这整件事很陌生,但我们开始吧:
您可以在 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(',','+')
我想知道如果我使用 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®ion=1%2B4
这就是 API 目前的样子
MYDOMAIN/path/getRegion?token&profileId=111&dataType=all®ion=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®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>
好吧,这是我对堆栈溢出的第一个回答,所以我对这整件事很陌生,但我们开始吧:
您可以在 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(',','+')