使用javascript为#,单引号和双引号编码值

时间:2015-03-16 12:19:20

标签: 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>

我想做什么? 我通过函数getParameterByName(&#39; q&#39;)获取查询字符串的值,然后构建脚本标记(var脚本)并将此值分配给textarea字段。

例如这是weburl:     http://hashgurus.com/q.aspx?q=%23BDMELODI_161其中(q =#BDMELODI_161) 我得到q的值(这是查询字符串)和框架脚本值。脚本的最终值通过以下代码看起来像这样:

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

但我确实需要查询字符串中的内容。预期结果应该是这样的:

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

另外,我需要正确处理查询字符串的单引号和双引号。 javascript中是否有任何函数可以对这些值进行编码?

2 个答案:

答案 0 :(得分:1)

如果我没有误解你的目标,请使用

encodeURIComponent(trendingitemvalue)

应该为哈希问题做好工作,不是吗?

我刚测试了它并且它有效,返回&#34;%23&#34;替换&#34;#&#34;。

如果我误解了你的问题,请告诉我哪里错了,也许我可以帮助你!

亲切的问候。

答案 1 :(得分:1)

要像在网址中那样对其进行编码,您应该使用encodeURIComponent

之后要在HTML属性中安全地插入值,你需要对它进行HTML编码,但是在JS中没有简单的方法,你应该使用&#34;翻译&#34;使用本机调用标记或构建div:

var div = document.createElement('div');
div.setAttribute('hg-trend', encodeURIComponent(trendingitemvalue));
div.className = "hg-trendingat-widget";
//div.outerHTML will return <div...></div>