我想知道如果我使用handlebar js来生成html元素,我是否能够通过.replace()
更改元素数据。
例如,我有p tag的这个角色,它通过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检索特殊字符“&amp; B2”,其等于符号“+”,并且API出错。
MYDOMAIN /路径/ getRegion令牌安培;简档= 111&安培;的dataType =所有&安培;区域= 1%2B4
这就是API目前的样子
MYDOMAIN /路径/ getRegion令牌安培;简档= 111&安培;的dataType =所有&安培;区域= 1 + 4
应该是解决方案
答案 0 :(得分:2)
我还没有任何handlebars.js的经验,但从我的观点来看,你可以把代码放在</body>
之前:
<script>
var node = document.getElementById('pre-region');
node.innerHTML = node.innerHTML.replace(',', '+');
</script>
如果它不起作用,我会检查把手js。
<强>更新强>
正如您在评论中提到的,如果您需要在HTTP请求/ URL中使用它,您可以使用decodeURIComponent(yourstring)
来处理字符串:
decodeURIComponent('1%2B44'); // you get '1+44'
从this了解有关decodeURIComponent()
方法的详情。在URL中,它应该在您的情况下编码为region=1%2B44
;如果要在JavaScript代码中使用它或在网页中显示,则应对其进行解码。
更新1
当您的字符串用作HTTP请求参数的一部分时,您应对其进行编码。因此,如果URL为:
,它看起来不错MYDOMAIN /路径/ getRegion令牌安培;简档= 111&安培;的dataType =所有&安培;区域= 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>
答案 1 :(得分:0)
好吧,所以这是我关于堆栈溢出的第一个答案,所以我对这件事感到陌生但是我们走了:
您可以在另一个在把手之后运行的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(',','+')