我的脚本中有两个函数,一个输出一些长HTML字符串,另一个将此字符串作为参数并处理它。
function myFirstFunction() {
//output some HTML
return myHTML;
}
var myHTML = myFirstFunction();
function mySecondFunction(myHTML) {
//do something with parameter
}
由于某些原因,我无法弄清楚,Chrome JS控制台一直给我以下错误: “未捕获的SyntaxError:意外的令牌<”
我想也许这可能是由于这样一个事实,即输出的HTML很长,因为它似乎与小块的HTML一起工作。 有什么想法吗? THX!
答案 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, "'");
}
此致