js、Extjs中函数的赋值和调用

本文详细解析了ExtJS框架中自定义滚动条的工作原理及实现方式,通过具体代码示例,介绍了如何正确绑定点击事件以触发滚动条更新,同时区分了函数赋值与执行的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//设置滚动条;
	function scrollFun(){
		Ext.getCmp('scrollItem').doLayout();
		Ext.getCmp('ScrollPanelID').doLayout();
		//设置滚动条的长度
		console.info('document.getElementById("bodyPanelID").style.height= '+document.getElementById('bodyPanelID').style.height);
		console.info('document.getElementById("bodyPanelID").offsetHeight= '+document.getElementById('bodyPanelID').offsetHeight);
		console.info('document.getElementById("bodyPanelID").clientHeight= '+document.getElementById('bodyPanelID').clientHeight);
		console.info('document.getElementById("bodyPanelID").scrollHeight= '+document.getElementById('bodyPanelID').scrollHeight);
		document.getElementById('scrollItem').style.height=(document.getElementById("bodyPanelID").clientHeight/document.getElementById("bodyPanelID").scrollHeight)*document.getElementById("ScrollPanelID").clientHeight+'px';
		//设置滚动条的高(所在位置)
		document.getElementById('scrollItem').style.top=(document.getElementById('bodyPanelID').scrollTop/document.getElementById('bodyPanelID').scrollHeight)*document.getElementById("ScrollPanelID").clientHeight+'px';
		console.info('document.getElementById("scrollItem").style.height= '+document.getElementById('scrollItem').clientHeight);
	}
	
	
	
	//画滚动条的长度和top值。
	Ext.get('win').on('click',scrollFun());



在这里面,当不点击id='win'的元素时,也会调用scrollFun()这个函数。其实scrollFun()函数在页面加载时就已经执行了。当点击时id='win'的元素时,反而报错了。

为什么?

原因是:

Ext.get('win').on('click',function(){});因为这句代码是重写Extjs中的click事件,我们把新的函数赋值给click事件。红色标记的地方是正确的,因为我只是声明了一个函数,然后赋值给click事件,并没有执行。在js中所有函数、变量、类对象都是var类型,所以都可以互相赋值。但是要注意,scrollFun():在函数名后加了()的就不是赋值了,而是函数执行语句。

Ext.get('win').on('click',scrollFun);对,
Ext.get('win').on('click',function(){});对
Ext.get('win').on('click',scrollFun());错


function fun(){
      alert('fun');
}
//想把函数fun赋值给a对象
var a=fun;对
var a=fun();错,这里变成了执行fun()函数了,而不是赋值。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值