为什么这个隐藏显示功能不起作用?

问题描述:

我是一个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

你的代码是完美的,但要创建在页面的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上_并不意味着什么。 –