首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript: style.display:'block‘不起作用

Javascript: style.display:'block‘不起作用
EN

Stack Overflow用户
提问于 2014-05-26 03:55:59
回答 4查看 12.5K关注 0票数 3

你知道为什么这个JavaScript只显示“块”而不显示(隐藏的) DIV的内容吗?

代码语言:javascript
运行
复制
<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。

谢谢!

EN

回答 4

Stack Overflow用户

发布于 2014-05-26 03:58:51

因为您希望使用onclick事件处理程序,而不是href属性:

代码语言:javascript
运行
复制
<a href="#" onclick="document.getElementById('mydiv').style.display='block';">Show my DIV</a>

(附注:内联JavaScript通常不受欢迎)

票数 5
EN

Stack Overflow用户

发布于 2014-05-26 04:26:43

javascript表达式的值

代码语言:javascript
运行
复制
document.getElementById('mydiv').style.display='block'

是字符串'block' -想想你可以做a=b='something'的方式-在javascript中,赋值表达式的值是赋值的值。

如果你尝试

代码语言:javascript
运行
复制
<a href="javascript:'howdy'">link</a>

您会发现,单击该链接将导航到仅包含单词howdy的文档-您的代码中也会发生同样的事情。您可以通过添加显式void(0)或将代码包装在不返回值的立即调用的函数表达式中(即隐式返回undefined)来阻止这种情况的发生,因此:

代码语言:javascript
运行
复制
<a href="javascript:(function(){document.getElementById('mydiv').style.display='block';})()">

(这种结构通常用在bookmarklet中)。但是,正如一些评论已经指出的那样,通常不赞成使用javascript: hrefs,您应该考虑使用事件处理。

票数 3
EN

Stack Overflow用户

发布于 2014-05-26 04:13:35

下面的代码描述了你的问题:http://jsbin.com/jigiy/1

代码语言:javascript
运行
复制
<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有关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23859408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档