在 IE 中,div 的显示属性不会从“无”更改为“块”
Posted
技术标签:
【中文标题】在 IE 中,div 的显示属性不会从“无”更改为“块”【英文标题】:Display property of a div is not changing from "none" to "block" in IE 【发布时间】:2015-07-15 09:18:41 【问题描述】:我有一个点击按钮的弹出窗口。我通过单击按钮将 div 的显示属性从“无”更改为“阻止”,该 div 位于弹出窗口内。当我在控制台中检查该 div 的显示属性时,它只显示“阻止”,但实际上该 div 仍然不可见并且显示属性值在页面的 html 中没有改变。
jsp文件中的HTML代码
我在弹出窗口中有一个按钮,在代码行下方该按钮的单击事件被调用 将显示属性从“none”更改为“block”
dojo.style(dojo.byId('error_text_reorder'), "display", "block");
当我点击按钮时,这段代码正在执行,但 div 仍然不可见。 但是如果我重新加载弹出窗口,则 div 是可见的。
除了这个 dojo 代码,我还尝试了这个 js 代码
document.getElementsByName("error_text_qty")[1].style.display='block';
这在 Firefox 中可以正常工作,但在 IE 中不起作用。
这个家伙的任何跨浏览器解决方案.....?
【问题讨论】:
当您提出问题时,文本区域右侧有一个橙色的大如何格式化框,其中包含有用的信息。还有一个完整的格式化辅助工具栏。还有一个 [?] 按钮提供格式化帮助。 和一个预览区域,位于文本区域和发布您的问题按钮(以便您必须扫描过去才能找到该按钮)之间,显示您的帖子发布后的样子。请在以后使用它们。 :-) 发布尽可能少的代码来复制您的问题! 您使用的是哪个版本的道场?请添加一些代码,以便我们查看您到目前为止所做的尝试。 【参考方案1】:dojo 和 jquery 都具有这种基本支持跨浏览器更改 dom 元素的样式。这个问题可能有几个解决方案。
-
升级您的 dojo 版本。 每个 dojo 版本都支持一组特定的浏览器。您使用的dojo版本可能不支持您使用的IE浏览器版本。
通过 ID 而不是名称获取,反之亦然。 您的两个代码示例使用两个不同的查询,dojo 代码通过 id
dojo.byId
获取 div,JS 示例是通过名称 getElementsByName
.您真的在一个元素中设置了 id 并在 div 中的另一个元素上设置了名称吗?如果需要,评估和调整您的代码。
尝试发布更多相关代码,以便我们更好地为您提供帮助,例如您尝试操作的 dom 元素的 HTML。
【讨论】:
嗨 Danny,我使用的是 dojo 版本 1.8.7。 我用这段代码来改变显示属性值,它在firefox中工作正常,但在IE中不起作用。奇怪的是,当我在 IE 控制台中检查 display 属性的值时,它只显示块。但是 div 在弹出窗口中仍然不可见。 document.getElementsByName("error_text_qty").[1].style.display='block'; document.getElementsByName("error_text_qty")[1].style.color='red';给定 id (error_text_qty) 是 div 元素的 id,这个 div 也在 div 中。 你用的是什么版本的IE?您可以发布您尝试操作的 HTML,例如 div 和弹出窗口吗?谢谢! 我正在使用 IE 8 和 IE 11。我正在使用 dijit/Dialog (dojo) 创建弹出窗口。Some Text
这个标签也在一个 div 元素下。我通过使用更改了显示属性: document.getElementById("error_text_reorder").style.display="block"; document.getElementById("error_text_reorder").style.color="red";但是 div 在弹出窗口中仍然不可见,而这一行 "document.getElementById("error_text_reorder").style.display" 仅在 IE 8 控制台中显示 "block"。
以上是关于在 IE 中,div 的显示属性不会从“无”更改为“块”的主要内容,如果未能解决你的问题,请参考以下文章
如何在超链接单击 [重复] 上将浏览器从 IE 更改为 Chrome