[英]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.