代码之家  ›  专栏  ›  技术社区  ›  Evgeny

如何解决谷歌闭包(创建简单工具栏)中的“无法调用方法…到未定义”?

  •  3
  • Evgeny  · 技术社区  · 16 年前

    下面是一个完整的HTML源代码,用于构建一个带有Google闭包的简单工具栏。

    在chrome中给出错误消息: Uncaught TypeError: Cannot call method 'addChild' of undefined 在标有 // ERROR 评论。

    有人能建议给我小费吗?谢谢!!!

    编辑: 没错,错过了 新的 但另一个错误是我应该使用 render() 而不是 decorate() ,因为 装饰() 要求所有的DOM元素都在适当的位置(并且我没有定义按钮的占位符),而 Read() 创建新的。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    
    
    <script type="text/javascript" src="/m/google-closure/closure/goog/base.js"></script> 
    <script type="text/javascript"> 
        goog.require('goog.dom');
        goog.require('goog.ui.Toolbar');
        goog.require('goog.ui.ToolbarButton');
    </script> 
    <script type="text/javascript"> 
        var load_sketcher = function(){
            var tb = goog.ui.Toolbar();
            tb.addChild(new goog.ui.ToolbarButton('A'), true);// ERROR!!!
            tb.addChild(new goog.ui.ToolbarButton('B'), true);
            tb.decorate(goog.dom.getElement('sk_toolbar'));// should have used render() here
        };
    </script> 
    
    </head> 
    <body onload='load_sketcher();'> 
    
    <div id="sketcher"> 
        <div id="sk_toolbar"></div> 
        <div id="sk_canvas"></div> 
    </div> 
    
    </body> 
    </html> 
    
    1 回复  |  直到 15 年前
        1
  •  5
  •   Hogan    16 年前

    可能还有其他问题,但错误是因为您需要新的关键字,所以行应该如下所示:

     var tb = new goog.ui.Toolbar();