传递变量Javascript

时间:2011-05-18 17:27:34

标签: javascript html parameter-passing

我正在尝试在javascript中传递变量。我以下面的方式创建一个链接,一切似乎都在起作用。

label.innerHTML = '<a href="#" onclick="show_box(this);"> link</a>';

然而,当我以下面的方式创建链接时,链接也会传递一个关联的对象,我从firebug得到以下错误 - &gt;元素列表后“缺少”“

label.innerHTML = '<a href="#" onclick="show_box(this,'+object+');"> link</a>';

这是将对象传递给函数的可接受方式吗?问题是我在一个函数中创建这个链接。该函数根据传递给它的对象创建这样的链接。因此,我不能将这个“对象”作为全球范围。

3 个答案:

答案 0 :(得分:7)

您正在通过将字符串混合在一起来构建脚本,因此您只能使用字符串,object将自动进行字符串化。

改用DOM。

var link = document.createElement('a');
link.href = "#"; // Have a more sensible fall back for status bar readers and middle clickers
link.appendChild(document.createTextNode(' link');
link.addEventListener('click',function () { show_box(this, object); },false);
label.appendChild(link);

...但是使用一个库来抽象出一些浏览器所拥有的非标准事件模型。

答案 1 :(得分:1)

您要做的是将object的内容传递给输出。由于它是一个对象,字符串表示将类似于[object Object]。输出HTML看起来像:

<a href="#" onClick="show_box(this, [object Object]);">link</a>

无效。不要尝试连接对象,只需将其作为另一个参数传递给函数,如this。或者,更好的是,使用jQuery:

<!-- somewhere in the head, or at least after the object is defined -->
<script type="text/javascript">
$(function() {
    $('#thelink').click(function() { show_box(this, object); });
});
</script>

...

<a href="#" id="thelink">link</a>

答案 2 :(得分:0)

如果你的对象是简单的变量,比如数字或字符串变量,那么它就好了,但是如果你传递的是html对象,它就不会起作用,因为它会像下面那样。

    <a href="#" onclick="show_box(this,[object HTMLDivElement]);"> link</a>
相关问题