2011-01-06 128 views
1

我想換一個HTML元素創建Ext.Element的,但與一些ID這個神祕覆蓋Ext.id功能,使該點爲什麼Ext.id函數被覆蓋?

我試圖讓說明這個簡單的例子之後,ExtJS的不可用雖然我不得不通過原始應用程序中的很多代碼來找到這個微妙的bug,例如試試這個代碼在網上http://jsfiddle.net/rdudW/1/或使用該

<html> 
<head> 
<script type="text/javascript" src="adapter/ext/ext-base.js"></script> 
<script type="text/javascript" src="ext-all.js"></script> 
<script> 
Ext.onReady(function(){ 
    alert(Ext.id) 
    var elem = Ext.Element(document.getElementsByTagName('table')[0]) 
    alert(Ext.id) 
}); 
</script> 
</head> 
<body> 
<table><table> 
</body> 
</html> 

調用Ext.Element的警報顯示函數定義之前,但一個ID中,「ext-2代」

注後:我知道我應該使用新的Ext.Element對象但這不是問題,問題是爲什麼發生這種簡單的可能錯誤?

回答

4

我已經瀏覽了源代碼,並且有幾個函數,如果在錯誤範圍內調用將覆蓋Ext.id。省略new可能就是這樣做的。其中一個功能是在創建Element的對象實例Ext的背景下調用的。

看到這個:

Ext.Element = function(element, forceNew){ 
    var id; 
    /* some code here */ 

    id = dom.id; 

    /* some code here */ 

    /** 
    * The DOM element ID 
    * @type String 
    */ 
    this.id = id || Ext.id(dom); 
}; 

如果調用此方法new然後this是指新創建的對象。如果你直接打電話,this是指Ext

+0

謝謝,我做了快速的Ext.id搜索,找不到任何任務:) – 2011-01-06 12:13:12