Javascript 如何将大量HTML代码作为参数传递给JS函数?

Javascript 如何将大量HTML代码作为参数传递给JS函数?,javascript,html,facebook,fbjs,Javascript,Html,Facebook,Fbjs,我想将一大块html代码(可能是2-3段html格式的代码)作为参数传递给来自html的Javascript函数调用。问题是,格式化的HTML不断出现在页面本身中,这不应该发生!我假设单引号/双引号有问题 而且,我正在Facebook标签页上工作 有人能帮我吗 谢谢 - ahsan一种方法是有一个隐藏的div(display:none),并用2-3段html格式的代码填充它。然后,您可以将div的innerHTML传递到函数中。(任何类型的)引号在这种方法中都不会引起问题。一些库,如icanha

我想将一大块html代码(可能是2-3段html格式的代码)作为参数传递给来自html的Javascript函数调用。问题是,格式化的HTML不断出现在页面本身中,这不应该发生!我假设单引号/双引号有问题

而且,我正在Facebook标签页上工作

有人能帮我吗

谢谢

-
ahsan

一种方法是有一个隐藏的div(display:none),并用2-3段html格式的代码填充它。然后,您可以将div的innerHTML传递到函数中。(任何类型的)引号在这种方法中都不会引起问题。

一些库,如icanhaz.js,也会执行以下操作:

<script type="text/html" id="someHTMLTemplate">
   <div>You can put whatever html you want here</div>
   <p>And the browser just ignores it</p>
</script>

你可以把任何你想要的html放在这里
浏览器会忽略它


我对mustache.js使用相同的技术,然后通过dom id从脚本标记的innerHTML中抓取模板。这样做的好处是,浏览器不必在加载时解析额外的html,当您需要在页面上的另一个节点中显示它时,只需对其进行解析。

另一种方法是对html进行编码然后在JS中解码。下面是一个使用JS escape信息的示例:

console.log(escape("<hello></hello>"));           // %3Chello%3E%3C/hello%3E
console.log(unescape("%3Chello%3E%3C/hello%3E")); // <hello></hello>
console.log(转义(“”);//%3Chello%3E%3C/hello%3E
console.log(unescape(“%3hello%3E%3C/hello%3E”);//

请注意,如果您在开始时对字符串引号有问题,那么编码仍然会有问题。

谢谢,display:none可以很好地工作。我将努力贯彻你的其余建议。:)我这样做还有另一个问题:我这样做是为了看不见的html:
echo.“$fdesc.”并将其放入我的JS函数var
newVal=document.getElementById('y257y').getValue()中…但它不起作用..我一直没有定义…有什么帮助吗???它在Facebook上不起作用,无法在Facebook中“获取”innerHTML。@啊山,你不需要
innerHTML
。对于
元素,
innerHTML
innerText
是相同的,所以只需使用
innerText
textContent
,以浏览器支持的为准。抱歉,FBJS不支持
innterHTML
innterText
textContent
中的“get”!!:(好吧,它做了一些“unescape”的工作,但仍然不是我需要的完整的urldecode操作:(…还有其他方法吗?你到底需要编码什么?试试或者(组件执行一些特殊字符)内容是使用PHP的
urlencode
函数编码的。我在使用
decodeURIComponent
时遇到未知函数错误,将尝试另一个(
decodeURI
)。还有其他建议吗?PHP和JavaScript是两种不同的脚本语言。您应该使用编码时使用的相同算法进行解码。