Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript函数,将HTML作为参数传递_Javascript_Html_Ajax_Function_Parameters - Fatal编程技术网

JavaScript函数,将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控制台一直

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

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

var myHTML = myFirstFunction();

function mySecondFunction(myHTML) {
    //do something with parameter
}
出于某种我无法理解的原因,Chrome JS控制台一直给我以下错误:
“未捕获的语法错误:意外的标记myHTML是用一些额外的构造的,因此请验证html字符串以下是问题:

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

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, "'");
}