为什么这个隐藏显示功能不起作用?
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 区域中,这会导致范围问题。
我是 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 区域中,这会导致范围问题。