2015-03-18 54 views
0

你好,我有繞一圈,然後最終的字符串被髮送到一個DIV標籤類的功能...的HTMLEncode在JavaScript字符串

$(document).ready(function addcopy() { 
     /* global */ 
     $(".Bands").append('<div style="display: inline-block;">[EDIT]&nbsp;<a href="[LINK]"><h7 style="color:#7A0029;line-height: 110%;text-transform: uppercase;">[Custom:Name]</h7></a>&nbsp;</div>'); 
    }); 

它工作正常。不過令牌[自定義:名稱]可能包含特殊字符,如單或雙引號等等

我看了看周圍這些論壇,並試圖以我的代碼適應提供的各種解決方案,它似乎永遠不會工作,能有人幫幫我嗎?

感謝您的幫助!

亞歷

EDIT(1):

取得了一些進展,從Ockert的和LeFex的回答我下面的適應它,但它仍然無法正常工作(從記號的HTML可以取代語音標記和特殊字符「T手柄)...

function htmlEncode(value){ 
return $('<div/>').text(value).html(); 
} 

$(document).ready(function(){ 
    /* global */ 
    var band = $("<div style='display: inline-block;'>[EDIT]&nbsp;<a href='[LINK]'><h7 class='name' style='color:#7A0029;line-height: 110%;text-transform: uppercase;'>[Custom:Name]</h7></a>&nbsp;</div>"); 


    band.appendTo(htmlEncode('.Bands')) 

}); 
+0

那麼這有什麼問題?將[Custom:Name]作爲雙引號會出現什麼問題? – 2015-03-18 20:53:25

+0

[自定義:名字]是什麼,來自於後端和您正在打印模板裏面這個JavaScript?如果是,則在此模板的引擎文檔中搜索如何爲javascript轉義字符。在第一篇文章 – 2015-03-18 20:55:12

+0

檢查EDIT1。我不知道的[自定義:姓名]什麼文字令牌將包含... 的HTML將不包含特殊字符,如該令牌內行情解析.. – ScriptAlexS 2015-03-18 21:30:47

回答

0

你可以改變你的腳本太

$(document).ready(function(){  
    var band = $("<div style='display: inline-block;'>[EDIT]&nbsp;<a class='link' href='[LINK]'><h7 class='name' style='color:#7A0029;line-height: 110%;text-transform: uppercase;'>[Custom:Name]</h7></a>&nbsp;</div>"); 

    band.find('.name').html("some weird name [email protected]#$%^&*"); 
    band.find('.link').attr("href","http://www.google.com"); 
    band.appendTo('.Bands'); 

}); 

通過分割它這樣,使您可以將名稱設置爲你想要的任何東西。您可以輕鬆地在此的jsfiddle http://jsfiddle.net/fL3gn056/2/

+0

看起來幾乎有,但不完全是我想要做的,請在第一篇文章中看到(編輯1)...謝謝... – ScriptAlexS 2015-03-18 21:28:01

+0

@ScriptAlexS您在編輯1中的解決方案不會對我產生興趣。你能否用你想要做的事例來創建一個jsfiddle,即使它不起作用。然後,我們可以從那裏工作 – Ockert 2015-03-19 17:34:56

0

你可以使用,而不是隻追加一個字符串使用document.createElement選擇name元素

看看。

http://www.w3schools.com/jsref/met_document_createelement.asp

如果你只是創建DIV,和H7元素,使用appendChild功能,並通過設置元素屬性添加樣式和屬性內容,你應該結束了一個sollution,允許任何特殊字符。

編輯:

我不能使用該方法得到它的工作;然而,我上面提出的辦法,我得到了一些工作代碼:

var element = document.createElement("div"); 

element.style.display = "inline-block"; 

var link = document.createElement("a"); 
link.setAttribute('href', "[LINK]"); 

var text = document.createElement("h7"); 

text.style.color = "#7A0029"; 
text.style.lineHeight = "110%"; 
text.style.textTransform = "uppercase"; 
text.innerHTML = "[CUSTOM:NAME]"; 

//not sure what you're appending it all to, but do it here 
document.getElementsByClassName("Bands")[0].appendChild(element); 
element.appendChild(link); 
link.appendChild(text); 

在這個片段中,所有的輸入特殊字符被解釋爲一個字符串,而不是代碼。一些調用我已經把在同一行,但這樣一來你得到一個易於閱讀的概述。

下面是關於這個問題的早期線程,最多的回答帶來了不同的方法來討論的性能問題。

jQuery document.createElement equivalent?

+0

請檢查(編輯1)在第一篇文章...不能得到它的工作。很多謝謝 – ScriptAlexS 2015-03-18 22:10:06

+0

我看到了你的編輯,但無法達到所需的結果。請看看我編輯的答案。 – LeFex 2015-03-19 15:16:10