2016-04-29 89 views
1

我在想如果我能够通过.replace()更改元素数据,如果我使用handlebar js生成html元素。apple .replace()Html元素由handlebar生成js

例如我有p标记的这种作用,其通过车把JS显示数据的行:

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

,结果它是

1,44

,我想将其更改为

1 + 44

如果您还没有车把JS的任何经验,再考虑标签是

<p id="pre-region">1,44</p> 

我应该如何从1.44变为1 +44?

更新1

这里应该是我的问题的extersion。我将前置区域内的HTML元素传递给href,以便通过Ajax更新我的网站。

将所有逗号转换为“+”后,API检索特殊字符“& B2”,其等于符号“+”,并且API出错。

MYDOMAIN /路/ getRegion?令牌&简档= 111 &的dataType =所有&地区= 1%2B4

这是怎么可能API看起来像此刻

MYDOMAIN/path/getRegion?token & profileId = 111 & dataType = all & region = 1 + 4

应该是解决方案

回答

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' 

从了解更多关于decodeURIComponent()方法this。在URL中,在你的情况下它应该被编码为region=1%2B44;而如果你想在你的JavaScript代码中使用它或者在网页中显示,它应该被解码。

更新1

当它作为HTTP请求参数的一部分,就应该编码您的字符串。因此,它看起来很不错,如果网址是:

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> 
+0

我试过你的方法,它把它改成+,但传递给API时改变特殊字符 – anson920520

+0

成了类似地区= 1%2B4 – anson920520

+0

@ anson920520莫非你请给我看更多的代码? – iplus26

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) + "'"; 

或使用替代():

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