2016-04-29 2 views
1

Мне интересно, как я могу изменить данные элемента на .replace(), если я использую handlebar js для генерации элементов html.apple .replace() Элемент html generate by handlebar js

Например я иметь эту роль р тег, который отображать строку данных с помощью руле ЯШ:

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

и результат это

1,44

и я хотел бы изменить его на

1 + 44

Если вы не имели никакого опыта руле JS, то рассмотрим тег будет

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

как я должен измениться от 1,44 до 1 +44?

UPDATE 1

Здесь должен быть extersion на мой вопрос. Я передаю элемент HTML внутри pre-region в href, чтобы обновить мой сайт Ajax.

После того, как я преобразовал все запятые в "+", API получает специальный символ "& B2", который равен символу "+", и API выходит из строя.

MYDOMAIN/путь/getRegion? Лексема & ProfileID = 111 & DATATYPE = все & область = 1% 2B4

Это, как может API выглядит на данный момент

MYDOMAIN/path/getRegion? токен & profileId = 111 & dataType = все & регион = 1 + 4

должно быть решение

ответ

2

Я не имел никакого опыта handlebars.js, но с моей точки зрения, вы можете просто поставить код непосредственно перед </body>:

<script> 
    var node = document.getElementById('pre-region'); 
    node.innerHTML = node.innerHTML.replace(',', '+'); 
</script> 

Я ll проверить рули js в случае, если он не работает.

Update: Как вы упомянули в комментарии, если вам нужно использовать его в запросе HTTP/URL, вы можете обрабатывать строку, используя decodeURIComponent(yourstring):

decodeURIComponent('1%2B44'); // you get '1+44' 

Подробнее о decodeURIComponent() метод из this.В URL-адресе он должен быть закодирован как region=1%2B44 в вашем случае; в то время как он должен быть декодирован, если вы хотите использовать его в своем JavaScript-коде или отображать на веб-странице.

Update 1

Вы должны кодировать строку, когда он используется в качестве части параметра запроса HTTP. Таким образом, она хорошо выглядит, если URL является:

MYDOMAIN/путь/getRegion маркер & ProfileID = 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(',','+')