[英]Javascript: style.display:'block' doesn't work
知道为什么这个JavaScript只显示“阻止”而不是(隐藏)DIV的内容?
<html>
<body>
<div id="mydiv" style="display:none">TEST</div>
<a href="javascript:document.getElementById('mydiv').style.display='block';">Show my DIV</a>
</body>
</html>
我也试过'内联'但结果相同。
return false / true也失败了。
onclick =''也失败了。
我知道有style.visibility等但我不需要/块。
此函数应该在链接内部工作,我不想调用外部JS函数。
谢谢!
因为您想使用onclick事件处理程序,而不是href属性:
<a href="#" onclick="document.getElementById('mydiv').style.display='block';">Show my DIV</a>
(旁注:内联JavaScript通常不赞成)
javascript表达式的值
document.getElementById('mydiv').style.display='block'
是字符串'block'
- 想想你可以做a=b='something'
- 在javascript中,赋值表达式的值是赋值。
如果你试试
<a href="javascript:'howdy'">link</a>
你会发现点击链接导航到一个只包含单词howdy
的文档 - 你的代码也会发生同样的事情。 您可以通过添加显式void(0)
或将代码包装在不返回值的立即调用的函数表达式中(即隐式返回undefined
)来阻止这种情况发生,因此:
<a href="javascript:(function(){document.getElementById('mydiv').style.display='block';})()">
(此结构通常用于书签)。 但是,正如几条评论已经指出的那样,一般来说javascript:
hrefs的使用是不受欢迎的,你应该考虑使用事件处理。
此代码描述了您的问题: http : //jsbin.com/jigiy/1
<div id="mydiv" style="display:none">TEST</div>
<a href="javascript:document.getElementById('mydiv').style.display='block',false;">Show my DIV</a>
为什么会这样:
Javascript setters返回值输入,因此document.getElementById('mydiv').style.display='block'
将返回'block'
,它等于href="javascript:'block'"
。 现在它引用about:blank
并将其内容设置为block
。
我不确定为什么浏览器会引用和设置about:blank
的内容,但我认为这与data-urls有关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.