这段JS代码里为啥不能这样写

function Tab(oParent,child) {
		 this.oParent= document.getElementById(oParent);
		 this.aInput = this.oParent.getElementsByTagName(child);
		 this.aDiv = this.oParent.getElementsByTagName('div');
		
	}
    Tab.prototype.init=function ()  {
	for (var i = 0 ; i<this.aInput.length;i++){
			var that = this;
			this.aInput[i].index=i;
			this.aInput[i].onclick=function () { //为什么这里不能直接写成this.aInput[i].onclick=that.change(this)
				that.change(this);
			}
	}

	Tab.prototype.change=function (obj) {
				for(var j=0 ;j<this.aInput.length;j++){
					this.aInput[j].className ='';
					this.aDiv[j].style.display='none';
				}

				obj.className = 'active'
				this.aDiv[obj.index].style.display='block';
			}
	}

	window.onload=function () {
		var tabSwitch = new Tab('div1','input');
		tabSwitch.init('div1') 
	}
	</script>


慕田峪8701529
浏览 1288回答 2
2回答

牛奶老哥哥

你这么写就直接在定义的时候就执行了啊,而且这个元素的点击也不会有任何事件响应.

cxxyjsj

onclick属性需要的类型是一个function, 你那么写是一个方法调用。返回值是undefined。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript