2015-03-16 4 views
1

Это функция, которую я использую, чтобы получить значение querystring через javascript.значения кодирования с использованием javascript для #, одиночные и двойные кавычки

function getParameterByName(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
    results = regex.exec(location.search); 
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

Я также вызов этой функции:

function GenerateCode() { 
    var trendingitemvalue = getParameterByName('q'); 
    alert(trendingitemvalue); 
    var script = "<script async src=\"//hashgurus.com/feed/Trendingat.js\"><\/script>"; 
    script += "\n<div class=\"hg-trendingat-widget\" hg-trend=\"" +trendingitemvalue + "\"></div>" 

    codearea.value = script; 
} 

<textarea style="height: 40px; color: blue" id="codearea" onclick="SelectAll(this)"></textarea> 

Что я пытаюсь сделать?
Я получаю значение querystring через функцию getParameterByName ('q'), а затем создавая тег сценария (var script) и присваивая это значение полю textarea.

, например, это weburl: http://hashgurus.com/q.aspx?q=%23BDMELODI_161 где (д = # BDMELODI_161) Я получаю значение д (который является QueryString) и обрамлением значения сценария. Окончательное значение скрипта выглядит следующим образом:

<div class="hg-trendingat-widget" hg-trend="#BDMELODI_161"></div> 

но мне нужно точно то, что находится в строке запроса. Ожидаемый результат должен быть таким:

<div class="hg-trendingat-widget" hg-trend="%23BDMELODI_161"></div> 

Также мне нужно заботиться о одинарных и двойных кавычек в строку запроса правильно. Есть ли какая-либо функция в javascript для кодирования этих значений?

ответ

1

Если я не misundersand своих целей, используя

encodeURIComponent(trendingitemvalue) 

должны делать работу по этому вопросу хэша, не так ли?

Я только что протестировал его, и он сработал, возвращая «% 23» вместо «#».

Если я неправильно понял ваш вопрос, сообщите мне, где я ошибаюсь, и, возможно, я могу вам помочь!

С уважением.

+0

Это сработало. Благодарю. –

1

Чтобы закодировать его так, как в URL-адресе, вы должны использовать encodeURIComponent.

После этого, чтобы вставить значение в HTML-атрибут, вам нужно его закодировать в HTML, однако нет метосов, которые просто делают это в JS, вы должны или использовать тег «транслятор» или строить свой div, используя собственные вызовы :

var div = document.createElement('div'); 
div.setAttribute('hg-trend', encodeURIComponent(trendingitemvalue)); 
div.className = "hg-trendingat-widget"; 
//div.outerHTML will return <div...></div> 
Смежные вопросы