2012-05-21 25 views
1

试图通过侦听对象&的属性来隐藏左/右导航文本。无法读取javascript中的对象属性

工作示例:http://jsfiddle.net/ylokesh/9EyEu/29/

但是,让下面的错误 “遗漏的类型错误:无法调用未定义的方法 '隐藏'”

if(!scroller) { var scroller = {}; } 

      scroller = { 
       next : "#leftControl", 
       prev : "#rightControl", 
       videos : { 
        hideButtons : function() { 
         var obj = this; 
         obj.next.hide(); 
         obj.prev.hide(); 
        }, 
        init : function() { 
         var obj = this; 
         obj.hideButtons(); 
        } 
       }, 
       init : function() { 
        var obj = this; 
        obj.videos.init(); 
       }        
      } 

scroller.init();​ 
+0

行'if(!scroller){var scroller = {}; }'在上面的代码示例的上下文中没有用处。 – epascarello

+0

@epascarello你是对的。实际上,我已经开始使用高级javascript概念开发一个插件,以便稍后在代码中使用此语句。 –

回答

2

以下是更正后的js的问题:

var scroller = { 
    next : "#leftControl", 
    prev : "#rightControl", 
    videos : { 
     hideButtons : function() { 
      $(scroller.next).hide(); 
      $(scroller.prev).hide(); 
     }, 
     init : function() { 
      this.hideButtons(); 
     } 
    }, 
    init : function() { 
     scroller.videos.init(); 
    }        
}; 

scroller.init();​ 

如您所见,我参考scroller对象而不是this。在您设置var obj = this的情况下,this关键字未引用scroller对象。

2

@Lokesh您的JavaScript错误是因为nextprev是字符串,他们没有hide方法。

+0

如果想要应用hide()方法,我该如何更正代码? –

+0

查看@ john-kalberer的回答。另外,如果你能解释你的需求,以便我或他人能够帮助你的API,那将是一件好事。 – g13n

+0

实际上,我需要创建一个视频缩略图滑块,每点击3个项目将滚动。对于这个任务,我必须使用高级javascript概念来使其可配置。我怀疑物体是如何交流的,所以问了这个问题。像这样的地方,我用通用的JavaScript:http://jsfiddle.net/ylokesh/9EyEu/ –