标签:
//设置滚动条; 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()函数了,而不是赋值。
标签:
原文地址:http://blog.csdn.net/mastershaw/article/details/51329131