2012-02-15 14 views
0

我需要解決我們仍在使用的舊系統上的問題。我忙於將一個新系統轉換爲jquery,但是這些舊系統中的這些塊有時會彈出。老學校JavaScript不能在Chrome和IE中工作

下面的代碼在Firefox中效果很好,但在Chrome或IE中完全不起作用。

我已經添加了一個console.log(「測試」),這在Firefox中運行,但不是在Chrome或IE中。

請讓我知道什麼是最好的方式來做到這一點在香草的JavaScript,所以它是跨瀏覽器友好。由於

代碼

function showlaptop(theTable) 
{ 
    if (document.getElementById(theTable).style.display == 'none') 
    { 
     document.getElementById(theTable).style.display = 'block'; 
     console.log("test"); 
    } 
} 

function hidelaptop(theTable) 
{ 
    if (document.getElementById(theTable).style.display == 'none') 
    { 
     document.getElementById(theTable).style.display = 'none'; 
    } 
    else 
    { 
     document.getElementById(theTable).style.display = 'none'; 
    } 
} 
+4

錯誤似乎不在您提供的代碼片段中。 。 – xandercoded 2012-02-15 04:25:32

+2

你有什麼錯誤?也許一個值被傳遞給'theTable',它不是作爲頁面上的ID存在的。 – gilly3 2012-02-15 04:35:17

+0

如果您在運行代碼之前打開控制檯,Chrome是否會告訴您錯誤? (Ctrl-shift-J)另外,'hidelaptop()'函數在if和else分支中執行相同的操作。 – nnnnnn 2012-02-15 04:45:15

回答

1

這應該在所有的瀏覽器...

function showlaptop(theTable) 
{ 
    if (document.getElementById(theTable).style.display == 'none') 
    { 
     document.getElementById(theTable).style.display = ''; 
     console.log("test"); 
    } 
} 

function hidelaptop(theTable) 
{ 
    if (document.getElementById(theTable).style.display == '') 
    { 
     document.getElementById(theTable).style.display = 'none'; 
    } 
    else 
    { 
     document.getElementById(theTable).style.display = 'none'; 
    } 
} 

即與''

更換'block'你不需要第二別的BTW .. 。

UPDATE :

正如Rob在評論中提到的那樣。一切的默認顯示值不是'block',儘管一些瀏覽器允許它,但那些遵循標準的頁面不會相應地顯示頁面...

+1

是否有什麼特別的原因明確地將'display'設置爲'block'會失敗?我似乎記得這是違約,但絕不是直接說明它的問題。 – ssube 2012-02-15 04:42:22

+0

因爲表格元素的[默認顯示值](http://www.w3.org/TR/CSS2/sample.html)是'table',而不是'block'。但是,有些瀏覽器不支持標準值,並且不會顯示任何錯誤,但那些堅持標準的瀏覽器將會顯示錯誤。 – RobG 2012-02-15 04:52:43

相關問題