你知道为什么这个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>
我也尝试了“inline”,但结果是一样的。
return false/true也失败。
onclick='‘也失败了。
我知道有style.visibility等,但我不需要任何/块。
另外,函数应该在链接内部工作,我不想调用外部JS-function。
谢谢!
发布于 2014-05-26 03:58:51
因为您希望使用onclick事件处理程序,而不是href属性:
<a href="#" onclick="document.getElementById('mydiv').style.display='block';">Show my DIV</a>
(附注:内联JavaScript通常不受欢迎)
发布于 2014-05-26 04:26:43
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';})()">
(这种结构通常用在bookmarklet中)。但是,正如一些评论已经指出的那样,通常不赞成使用javascript:
hrefs,您应该考虑使用事件处理。
发布于 2014-05-26 04:13:35
下面的代码描述了你的问题: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 setter返回值输入,因此document.getElementById('mydiv').style.display='block'
将返回'block'
,它等于href="javascript:'block'"
。现在它引用about:blank
并将其内容设置为block
。
我不确定为什么浏览器会引用和设置about:blank
的内容,但我认为这与数据urls有关。
https://stackoverflow.com/questions/23859408
复制相似问题