为什么这个隐藏显示功能不起作用?
问题描述:
我是一个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标签中调用它。如果你比较你的小提琴和@dtsq,你会注意到,如果你点击JAVASCRIPT按钮,你的负载类型是onLoad
,而他的是No wrap - in <body>
。
No wrap - in <body>
告诉浏览器不包装您的js代码并将其放在主体中。
请注意,No wrap - in <head>
也可以正常工作。
onLoad
告诉浏览器包装代码,以便它在onLoad窗口事件中运行。你说你在其他地方实现了这个代码,它工作。当您将这个普通的JavaScript代码添加到头部或正文部分时,它可以正常工作。但是我敢打赌,你试图把这段代码放在一个JQuery块或其他onLoad区域中,这会导致由于范围引起的问题。
请添加您的代码...此外,男人,人们快速与downvotes。 – AJFarkas
谢谢,即时通讯新的堆栈溢出,仍然试图找出全部出来 – mzrt
负载类型:没有包装。 https://jsfiddle.net/x3oj787q/2/ – dfsq