传递变量Javascript

传递变量Javascript,javascript,html,parameter-passing,Javascript,Html,Parameter Passing,我试图用javascript传递一个变量。我用下面的方式创建了一个链接,看起来一切都正常 label.innerHTML = '<a href="#" onclick="show_box(this);"> link</a>'; label.innerHTML=''; 但是,当我以以下方式创建链接时,链接也会传递一个关联的对象,我从firebug中得到以下错误->“元素列表后缺少] label.innerHTML=''; 这是将对象传递给函数的可接受方式吗。问题是我正

我试图用javascript传递一个变量。我用下面的方式创建了一个链接,看起来一切都正常

label.innerHTML = '<a href="#" onclick="show_box(this);"> link</a>';
label.innerHTML='';
但是,当我以以下方式创建链接时,链接也会传递一个关联的对象,我从firebug中得到以下错误->“元素列表后缺少]

label.innerHTML='';

这是将对象传递给函数的可接受方式吗。问题是我正在函数中创建此链接。该函数基于传递给它的对象创建这样的链接。因此,我不能将此“对象”作为全局作用域。

您通过将字符串混合在一起来构建脚本,因此您只能使用字符串,并且
对象将自动字符串化

改用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);

…但是使用一个库来抽象掉一些浏览器具有的非标准事件模型。

如果您的对象是简单变量(如数字或字符串变量),那么它就可以了,但是如果您传递html对象,它将不起作用,因为它类似于下面的内容

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

您要做的是将
对象的内容传递到输出。因为它是一个对象,所以字符串表示形式类似于
[object object]
。输出HTML如下所示:

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

这种方法被称为。jQuery是一个从浏览器中抽象出非标准事件模型的流行框架。当你说“但是使用一个库来抽象掉一些浏览器拥有的非标准事件模型”时,jQuery是一个笨拙的问题。你是什么意思?您提供的代码是否不适用于所有浏览器?
addEventListener
是标准的W3CDOM。微软实现了他们自己的事件模型,我不确定在看到对标准的支持之前,你必须从哪个版本的IE开始。其他浏览器也可能存在问题。事件库为您处理所有差异。
<a href="#" onClick="show_box(this, [object Object]);">link</a>
<!-- 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>