2012-06-03 132 views
0

此代碼工作正常在Firefox,但IE9返回「_area」錯誤未定義我的代碼工作在Firefox,但不是Internet Explorer

function dbasetype(){ 

    var dbasedata = document.forms[0]._dbase_name.value; 
    dbasedata = dbasedata.toUpperCase(); 
    dbasedata = dbasedata.replace(/\s/g, ""); 


    if (dbasedata.indexOf("UK_CONTACTS")==-1) { 
     _area.value = _dbase_name.value;    
    } else { 
     setarea(); 
    } 

您的答覆後,我現在已經改變了代碼到這一點,它的工作原理。我無法弄清楚爲什麼它在沒有定義的Firefox中起作用。我想它是從調用這個函數的函數中執行它們的?

function dbasetype(){ 

var dbasedata = document.forms[0]._dbase_name.value; 
     dbasedata = dbasedata.toUpperCase(); 
     dbasedata = dbasedata.replace(/\s/g, ""); 

var area = document.forms[0]._area;  
var _dbase_name = document.forms[0]._dbase_name; 

if (dbasedata.indexOf("UK_CONTACTS")==-1) { 
     area.value = _dbase_name.value;   
    } else { setarea(); } 
    } 
} 
+1

正如你所提供的代碼有沒有提到_area直到.value的線,這是一個有點困難的工作爲什麼它不起作用。此外,你引用_dbase_name一次與父母,並且一次沒有 – freefaller

+0

爲了您的其他問題。這似乎是有線的。通常,IE具有映射到ID而不是Firefox的全局對象。當然,你不會混淆Firefox和IE? – rekire

回答

0

哪裏_area定義?您是否依賴非標準行爲_area是頁面元素的ID?如果是的話切換到document.getElementById('_area')

+0

那麼,如果它是一個「_area」是一個頁面元素的id的情況下,那麼它會在IE瀏覽器,但不是Firefox ... – Pointy

+0

是這樣嗎?我不記得哪些瀏覽器做了這些...仍然不回答「_area」的定義 – JaredMcAteer

+0

是的,我同意,問題與「_area」不知何故。 Firefox對於不使用元素ID值執行「隱式變量」的事情非常固執; webkit瀏覽器就像IE一樣。 (我認爲在IE中這是一個可怕的錯誤功能,不應該被模仿,但這只是我。:-) – Pointy

0

至於我的關注,IE不支持document.forms[]陣列...

相關問題