簡體   English   中英

JavaScript函數,將HTML作為參數傳遞

[英]JavaScript function, pass HTML as parameter

我的腳本中有兩個函數,一個函數輸出一些較長的HTML字符串,另一個函數則將該字符串作為參數並對其進行處理。

function myFirstFunction() {
    //output some HTML
    return myHTML;
}

var myHTML = myFirstFunction();

function mySecondFunction(myHTML) {
    //do something with parameter
}

由於某種原因,我無法弄清楚,Chrome JS控制台不斷向我顯示以下錯誤: “未捕獲的SyntaxError:意外的令牌<”

我認為這可能是由於以下事實:輸出的HTML相當長,因為它似乎可以處理少量的HTML。 有什么想法嗎? 謝謝!

這是問題:

myHTML是這樣的HTML 字符串

var myHTML ="<div id="foo"><div id='hello'>hello</div><div id="bar">bar'asdf'asf"sdf"&soidf;</div></div>";

那是行不通的,因為其中包含無法轉義的引號和內容。

如果您使用innerHTML來獲取頁面上元素的HTML,那么這將不是問題。

myHTML是用一些<或>額外構造的,因此請驗證html字符串

我假設您實際上是在嘗試傳遞html,而不是字符串文字。 如果您嘗試以下操作:

myFunction(<html><body>...);

肯定會出現錯誤。 您需要使用字符串文字:

myFunction("<html><body>...");

如果您使用的HTML中帶有引號,則需要對其進行轉義或使用單引號:

"<div id="name">" 

不是有效的字符串。 使其:

"<div id=\"name\">" or
'<div id="name">'

有一種方法可以將html文本作為參數傳遞給javascript函數:在將其傳遞給javascript函數之前,只需替換html標記中的所有chars。 稍后在javascript中,您只需將所有特定字符恢復為正常。 訣竅是使javascript只識別它所排除的那些字符。

例:

[[C#]]

string urlString = "http://localhost:8698/DotNetNuke_Community_06.02.01_Install/Default.aspx?TabID=157&categoryId=92&newCategoryId=92";

                urlString = urlString.Replace("<", "µ");
                urlString = urlString.Replace(">", "Ħ");
                urlString = urlString.Replace("&", "€");
                urlString = urlString.Replace(":", "¥");
                urlString = urlString.Replace("=", "¬");
                urlString = urlString.Replace("/", "ä");
                urlString = urlString.Replace("?", "¿");
                urlString = urlString.Replace("'", "ʅ");
function(urlString);

[使用Javascript]]

function(urlString){
urlString = urlString.replace(/µ/g, "<");
        urlString = urlString.replace(/Ħ/g, ">");
        urlString = urlString.replace(/€/g, "&");
        urlString = urlString.replace(/¥/g, ":");
        urlString = urlString.replace(/¬/g, "=");
        urlString = urlString.replace(/ä/g, "/");
        urlString = urlString.replace(/¿/g, "?");
        urlString = urlString.replace(/ʅ/g, "'");
}

問候,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM