为什么这个隐藏节目功能不起作用?

时间:2016-03-04 22:39:59

标签: javascript toggle

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

1 个答案:

答案 0 :(得分:1)

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

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

onLoad告诉浏览器包装代码,使其在onLoad窗口事件中运行。你说你在其他地方实现了这个代码并且它有效。当您将这个普通的javascript代码添加到head或body部分时,它可以正常工作。但是我愿意打赌你试图将这些代码放在JQuery块或其他onLoad区域,这会导致由于范围问题。