JavaScript函数,将HTML作为参数传递
我的脚本中有两个函数,一个输出一些长HTML字符串,另一个将此字符串作为参数并处理它JavaScript函数,将HTML作为参数传递,javascript,html,ajax,function,parameters,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控制台一直
function myFirstFunction() {
//output some HTML
return myHTML;
}
var myHTML = myFirstFunction();
function mySecondFunction(myHTML) {
//do something with parameter
}
出于某种我无法理解的原因,Chrome JS控制台一直给我以下错误:
“未捕获的语法错误:意外的标记myHTML是用一些额外的
var myHTML ="<div id="foo"><div id='hello'>hello</div><div id="bar">bar'asdf'asf"sdf"&soidf;</div></div>";
var myHTML=“hellobar'asdf'asf”sdf”&soidf;";
这是行不通的,因为里面有引号和没有转义的东西
如果您使用
innerHTML
获取页面上某个元素的HTML,这不会是一个问题。我假设您实际上是在尝试传递HTML,而不是字符串文本。如果您尝试以下操作:
myFunction(<html><body>...);
myFunction(…);
这肯定会出错。您需要使用字符串文字:
myFunction("<html><body>...");
myFunction(“…”);
如果您使用的html中有引号,则需要对其进行转义或使用单引号:
"<div id="name">"
“”
不是有效字符串。请将其设置为:
"<div id=\"name\">" or
'<div id="name">'
”或
''
有一种方法可以将html文本作为参数传递给javascript函数:只需替换html标记中的所有特定字符,然后再将其传递给javascript函数。稍后在javascript中,您只需将所有特定字符还原为正常字符。诀窍是使javascript只识别它所排除的字符
例如:
[[C#]]
string url字符串=”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(“'”,“ʅ”);
函数(URL字符串);
[[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, "'");
}
函数(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,“”);
}
问候,在这里工作很好:@sachleen“myHTML“是一些长HTML输出。@是的,它可以处理短HTML字符串。@Santiago Elvila Ramirez谢谢,我现在正在看这个答案,但似乎另一个人的脚本在Firefox中运行得很好,这不是我的情况。@sf89可以显示myHTML吗?我有,真的看不到额外的“打开一个新的html文件,将html复制到那里,然后检查它,谢谢!我试过了,但是我的html看起来很干净,所以错误可能不是来自它。这是一个ajax上下文。所以我有:var string=“”;接收消息(字符串);正如你所看到的,我引用了我认为应该引用的话。还是错了?我不知道$myHTML的内容是什么,所以我根本不知道需要转义什么。你能不能发布一下PHP端$myHTML的内容?您可能需要在php端输出函数:echo'USER“class=”twitter share button“data count=“none”data lang=“en”data text=“”.$a_first_var.”“>ReTweet”。utf8_decode($some_var)。”;尝试在htmlspecialchars()中包装对utf8_decode()的调用我刚刚尝试过,但它把我甩了出去”未捕获的语法错误:意外标记&“有什么方法可以逃避它们吗?我不知道如何使用innerHTML来达到这个目的…谢谢你的帮助。”help@sf89在引号前添加斜杠以从普通代码中转义;例如:
var html=“”;
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, "'");
}