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

时间:2016-04-29 02:17:08

标签: javascript html handlebars.js

我想知道如果我使用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

应该是解决方案

2 个答案:

答案 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(',','+')