HTML onload - 使用变量作为参数

时间:2010-10-23 09:39:44

标签: javascript html variables parameter-passing onload

我想使用类似的东西:

<body onLoad="init('A sentence with "quoted text" as parameter')">

不幸的是,这确实有效,因为参数中的引号未得到正确处理。

转义引号也不起作用

<body onLoad="init('A sentence with \"quoted text\" as parameter')">

(以上也行不通。)

我该如何处理这件事。我虽然也许我可以创建一个字符串变量并将其句子(带引号)分配给它。但我不知道怎么做! body onload是HTML,Javascript变量只在脚本范围内可见,对吗?确切地说,以下方法不起作用:

<script language="JavaScript">
var dada='A sentence with \"quoted text\" as parameter';
</script>
<body onLoad="init($dada, '</a>')">

4 个答案:

答案 0 :(得分:9)

您必须使用HTML实体才能使其正常工作:

<body onLoad="init('A sentence with &quot;quoted text&quot; as parameter')">
但是,更简洁的方法是将值分配到文档头部的单独<SCRIPT>部分。

...
<script>
body.onload = function() { init('A sentence with "quoted text" as parameter'); }
</script>
<body>
...

onload事件的一般缺点是,只有在加载了文档及其所有资产(图像,样式表...)时才会触发它。这是onDOMLoad事件的来源:它在核心HTML结构准备就绪时触发,并且所有元素都被渲染。但是,它并不是跨浏览器统一支持的,因此所有框架都有自己的实现。

jQuery版本称为.ready().

答案 1 :(得分:3)

为什么不以编程方式设置它,而不是内联onLoad方法。然后,您可以使用closures的强大功能将数据导入函数。

<script type="text/javascript">
var data = "some data";
document.body.onload = function()
{
    alert(data);
}
</script>

答案 2 :(得分:2)

不是最好的方式

onload='init("A sentence with \"quoted text\" as parameter")'

答案 3 :(得分:0)

顺便说一下,我犯了一个愚蠢的错误。

<script language="JavaScript"> 
var dada='A sentence with \"quoted text\" as parameter'; </script> 
<body onLoad="init(dada, '</a>')"> 

这也有效。我在onload电话中使用$ dada而不是dada。