JavaScript函数,将HTML作为参数传递

时间:2012-09-19 18:27:14

标签: javascript html ajax function parameters

我的脚本中有两个函数,一个输出一些长HTML字符串,另一个将此字符串作为参数并处理它。

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

var myHTML = myFirstFunction();

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

由于某些原因,我无法弄清楚,Chrome JS控制台一直给我以下错误: “未捕获的SyntaxError:意外的令牌<”

我想也许这可能是由于这样一个事实,即输出的HTML很长,因为它似乎与小块的HTML一起工作。 有什么想法吗? THX!

4 个答案:

答案 0 :(得分:3)

这是问题所在:

myHTML是一个HTML 字符串,如下所示:

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

这样做是行不通的,因为你的内容中有引号和内容未被转义。

如果您使用innerHTML获取页面上元素的HTML,则不会出现问题。

答案 1 :(得分:2)

myHTML由一些&lt;或者&gt;额外的,以验证HTML字符串

答案 2 :(得分:0)

我假设你真的试图传递html,而不是字符串文字。如果你尝试这样的话:

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

那绝对是错误的。您需要使用字符串文字:

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

如果您使用的是带引号的html,则需要将其转义或使用单引号:

"<div id="name">" 

不是有效字符串。成为:

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

答案 3 :(得分:0)

有一种方法可以将html文本作为参数传递给javascript函数:在将其传递给javascript函数之前,只需替换html标记中的所有细节字符。稍后在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, "'");
}

此致