2016-03-04 78 views
3

我是一個javascript初學者,但我已經在其他地方實現了這個代碼,它的工作。我忽略了明顯的東西嗎?爲什麼這個隱藏顯示功能不起作用?

https://jsfiddle.net/x3oj787q/1/

HTML:

<a href="javascript:toggle_visibility('div');">help</a> 

<div id="div"style="display: none;"> 
help 
</div> 

JS:

function toggle_visibility(id) { 
    var e = document.getElementById(id); 
    if(e.style.display == 'block') 
     e.style.display = 'none'; 
    else 
     e.style.display = 'block'; 
} 
+2

請添加您的代碼...此外,男人,人們快速與downvotes。 – AJFarkas

+0

謝謝,即時通訊新的堆棧溢出,仍然試圖找出全部出來 – mzrt

+3

負載類型:沒有包裝。 https://jsfiddle.net/x3oj787q/2/ – dfsq

回答

1

你的代碼是完美的,但要創建在頁面的onLoad你的函數,這意味着其超出範圍當你從你的href標籤中調用它。如果你比較你的小提琴和@dtsq,你會注意到,如果你點擊JAVASCRIPT按鈕,你的負載類型是onLoad,而他的是No wrap - in <body>

No wrap - in <body>告訴瀏覽器不包裝您的js代碼並將其放在主體中。
請注意,No wrap - in <head>也可以正常工作。

onLoad告訴瀏覽器包裝代碼,以便它在onLoad窗口事件中運行。你說你在其他地方實現了這個代碼,它工作。當您將這個普通的JavaScript代碼添加到頭部或正文部分時,它可以正常工作。但是我敢打賭,你試圖把這段代碼放在一個JQuery塊或其他onLoad區域中,這會導致由於範圍引起的問題。

+0

我不明白你的意思。 – Ageonix

+0

仍然不知道你的意思。 – Ageonix

+0

我的意思是要小心解釋,因爲_你的代碼是完美的,但你正在將它加載到頁面的on_oad上_並不意味着什麼。 –

相關問題