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

Why is this hide show function not working?

我是 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';
}

您的代码是完美的,但是您是在页面的 onLoad 中创建函数,这意味着当您从 href 标记调用它时它超出了范围。如果您将 Fiddle 与 @dtsq 进行比较,您会注意到如果您单击 JAVASCRIPT 按钮,您的负载类型是 onLoad,而他的负载类型是 No wrap - in <body>

No wrap - in <body> 告诉浏览器不要包装你的js代码并将其放在body中。
请注意 No wrap - in <head> 也可以正常工作。

onLoad 告诉浏览器包装代码,这样它将 运行 在 onLoad window 事件中。你说你在别处实现了这段代码并且它有效。当您将此纯 javascript 代码添加到头部或正文部分时,它可以正常工作。但我敢打赌,您正试图将这段代码放在 JQuery 块或其他 onLoad 区域中,这会导致范围问题。