我正在尝试在javascript中传递变量。我以下面的方式创建一个链接,一切似乎都在起作用。
label.innerHTML = '<a href="#" onclick="show_box(this);"> link</a>';
然而,当我以下面的方式创建链接时,链接也会传递一个关联的对象,我从firebug得到以下错误 - &gt;元素列表后“缺少”“
label.innerHTML = '<a href="#" onclick="show_box(this,'+object+');"> link</a>';
这是将对象传递给函数的可接受方式吗?问题是我在一个函数中创建这个链接。该函数根据传递给它的对象创建这样的链接。因此,我不能将这个“对象”作为全球范围。
答案 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>