javascript
  • html
  • parameter-passing
  • 2011-05-18 145 views 4 likes 
    4

    我想在javascript中传递一个变量。我以下面的方式创建一个链接,一切似乎都在工作。传递变量Javascript

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

    然而,当我创建以下列方式的链接,该链接也将通过相关的对象,我从萤火虫出现以下错误 - >“失踪]之后元素列表”

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

    是这是将对象传递给函数的可接受方法。问题是我正在一个函数内创建这个链接。该函数根据传递给它的对象创建这样的链接。所以我不能把这个“对象”当作全局范围。

    回答

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

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

    +0

    +1,只有这样! – 2011-05-18 17:34:54

    +0

    这种方法被称为[Unobtrusive Javascript](http://en.wikipedia.org/wiki/Unobtrusive_JavaScript)。 [jQuery](http://jquery.com/)是一个非常流行的框架,可以从浏览器中抽象出非标准事件模型。 – namuol 2011-05-18 17:36:28

    +0

    尽管jQuery很笨重,但[这里有一些替代方法](http://microjs.com/#events) – Quentin 2011-05-18 17:37:32

    0

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

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