我有这段代码
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的初学者,所以这对我来说并不容易。
答案 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"
后缀,那么您将需要特殊情况下该对象的代码。