2011-05-09 38 views
2

有誰知道爲什麼當我在腳本中運行這段代碼時,它會帶我到一個頁面,上面寫着none?它似乎只在Firefox中發生。inline javascript firefox錯誤?

<a href="javascript:document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none';">CLOSE</a> 

回答

6

試試這個

<a href=" 
    javascript:document.getElementById('light') 
    .style.display='none';document.getElementById('fade') 
    .style.display='none';return false;">CLOSE</a> 

但是內嵌JS是一種反模式,這些天,我就建議把這個邏輯到JS文件,並給這個鏈接一個類或東西,可以讓你的鉤形並添加一個點擊事件監聽器

+0

謝謝你,這工作:) – Matt 2011-05-09 17:06:21

+2

這個工作的唯一原因是'返回false'引發一個異常,從而終止腳本,並防止它有一個返回值。所以它「起作用」,但它不是最好的解決方案...... – 2011-05-09 18:11:03

+0

它不會「拋出異常」,它只是停止處理錨點上的點擊事件,是的,這種方法有一些問題,但是這是獲得OP解決方案工作的阻力最小的路徑。 – Jimmy 2011-05-09 19:03:08

1

JavaScript中的賦值返回分配的值。 Firefox評估你的所有JavaScript,看到發生的最後一件事是一個返回'none'的聲明;然後它會確定該窗口的位置,因爲這就是鏈接的href屬性應該執行的操作。 (種類不管怎樣)

您可能希望使用錨標記的onclick屬性而不是href,並在末尾添加「返回false」,以便點擊鏈接的默認操作 - 導航到href - 不會發生。

<a onclick="document.getElementById('light').style.display='none'; 
      document.getElementById('fade').style.display='none'; 
      return false;">CLOSE</a> 

當然,更好的辦法是爲此定義一個函數。 =)

0

我的做法是這樣的:

<a href="javascript:void(0);" onclick="document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none';" >CLOSE</a> 

和作品非常好於大多數的網頁瀏覽器。