2016-04-29 86 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(',','+')