javascript - 显示问题 :none for some ajax content and a javascript toggle function

标签 javascript css

在我的网站上,我试图将我所有的内联样式合并到一个外部 css 文件中。我注意到在我的 7 个主要页面上我有数百个内联 style="display:none" 语句,所以我想我可以通过向我的外部样式表添加一个类来减少我的文件的一些 kB如下:

.DN {
    display:none;
}

在我的 7 个页面上,将每个内联 style="display:none" 替换为 class="DN" 总共减少了大约 5 kB(7 个页面的总和) ).但是,有几个地方失败了。例如,在一个页面上,用户可以通过在 display:none div 之间切换(每个 div 都设置为 display:none...除了#div1,默认情况下,当用户进入此页面时,可见性设置为可见)使用以下函数(toggle(layer) 在每次鼠标单击其他页面时调用元素):

function toggle(layer) {
    var divs = ["div1", "div2", "div3", "div4", "div5", "div6", "div7", "div8", "div9",    
    "div10", "div11"];
    for (var i = 0; i < divs.length; i += 1) {
        document.getElementById(divs[i]).style.display = 'none';
    }
    document.getElementById(layer).style.display = '';
}


<div id="div1" style="visibility:visible">More HTML here</div>
<div id="div2" style="display:none">More HTML here</div>
//9 more display:none divs...success

但是,当 div 样式更改为 class="DN"(class="DN" 替换 style="display:none"),div 的行为就好像 DN 类根本不存在一样。我最近在网站上的一些加载了 ajax 的内容上遇到了类似的问题。

<div id="div2" class="DN">More HTML here</div>
//Fail...div does not appear upon mouseclick of menu buttons

我认为外部 css 文件应该为所有 DOM 元素设置样式。作为旁注,我检查以确保我的外部文件中没有冲突的 css 样式元素......我看不到任何冲突(例如,如果我的其他 div 之一有 visibility:visible 外部 CSS 文件中的样式等)。出于好奇,是否想过通过设置 class="DN" 而不是内联 style="display:none" 可能会出现什么问题?

最佳答案

当您将 document.getElementById(layer).style.display = ''; 显示设置为空字符串时,CSS 仍通过样式表应用。如果您想覆盖样式表,在这种情况下,您可能需要将该行更新为 document.getElementById(layer).style.display = 'block';

关于javascript - 显示问题 :none for some ajax content and a javascript toggle function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21733808/

相关文章:

css - 需要自动宽度的响应式 div

javascript - 控件不存在。为什么?

javascript - 从button_tag调用javascript函数?

javascript - 读取 DOM 元素的哪些属性会导致浏览器重新绘制(回流)页面?

javascript - 设置 img src 属性时宽度和高度不变

javascript - 当元素在其上设置动画时更改背景图像的不透明度

css - 在标题内垂直对齐 Bootstrap 徽章

javascript - Angular/Ionic 点击事件传播

javascript - 似乎无法使用node js将css和js文件链接到heroku中的index.html

javascript - 折叠动画效果不起作用(改为溶解) - Fiddle inside