繁体   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