在JavaScript和jquery中使用自动增量

时间:2013-08-10 06:28:36

标签: javascript jquery

我有这段代码

if( !mobilecheck() ) {

            this.menu.addEventListener( 'mouseover', function(ev) {
                self._openMenu(); 
                document.addEventListener( self.eventtype, self.bodyClickFn ); 
            } );
            this.submenu1.addEventListener( 'mouseover', function(ev) {
                self._openSubMenu1(); 
                document.addEventListener( self.eventtype, self.bodyClickFn ); 
            } );
            this.submenu2.addEventListener( 'mouseover', function(ev) {
                self._openSubMenu2(); 
                document.addEventListener( self.eventtype, self.bodyClickFn ); 
            } );
        }

我希望能够替换

this.submenu1.addEventListener( 'mouseover', function(ev) {
                    self._openSubMenu1(); 
                    document.addEventListener( self.eventtype, self.bodyClickFn ); 
                } );

this.submenu[i].addEventListener( 'mouseover', function(ev) {
                    self._openSubMenu[i](); 
                    document.addEventListener( self.eventtype, self.bodyClickFn ); 
                } );

以及简化代码的方式。

我用过

for (var i = 0; i <= 2; i++) { code above }

但是我在Firebug中得到“TypeError:this.submenu [i] is undefined”。

我是javascript和jquery的初学者,所以这对我来说并不容易。

1 个答案:

答案 0 :(得分:1)

假设您真正想要做的是避免重复代码并使用[i]作为索引来访问每个变量,那么您可以通过将jQuery对象放入数组而不是单个变量来实现。你可以替换它:

this.subtrigger = [];
this.subtrigger[0] = this.el.querySelector( '.submenu0' );
this.subtrigger[1] = this.el.querySelector( '.submenu1' );    
this.subtrigger[2] = this.el.querySelector( '.submenu2' );

通过这样的方式,您可以通过索引访问它们。

this.subtrigger = [];
for (var i = 0; i <= 2; i++) {
    this.subtrigger[i] = this.el.querySelector('.submenu' + i);
}

注意:如果您的第一个对象没有"0"后缀,那么您将需要特殊情况下该对象的代码。