js、Extjs中函式的賦值和呼叫
阿新 • • 發佈:2019-02-16
//設定滾動條; 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()函數了,而不是賦值。