javascript - 试图覆盖动态生成的内联样式

标签 javascript html css styles

我正在尝试快速修复 wordpress 网站上出现问题的内容。问题是其他人创建了汤三明治,而我一直在修复它。我有一个元素显示在页面的两个不同部分中。第一个是后状态表单,它第二次出现在页面上无限重复的评论添加部分。该代码块适用于评论,但不适用于状态表单,所以我不想简单地隐藏它,直到我弄清楚如何 A) 找到生成代码的地方,B) 修复问题。

该元素具有在元素加载时动态应用(假设是 javascript)的样式。它一开始是隐藏的,然后管道中某处的某处显示了它。

这是我的代码的样子,首先是有效的元素:

<div class="activity-comments">
  <div class="audio_controls fresh" style>
    ....
  </div>
</div>

坏掉的方 block :

<div id="whats-new-post-in-box">
  <div class="audio_controls fresh" style="display: block;">
    ...
  </div>
<div>

因此,在第一个 block 中,代码中没有样式,出于某种奇怪的原因,无论编写它的人都留下了样式标签,但没有任何样式可供应用(完全愚蠢且格式错误的代码)。但是在第二个元素中,那个坏了的元素,它有一个 display:block 在运行时动态写入。我想弄清楚如何强制它显示:无。我已经尝试过 js,但不知何故我没有正确调用它(不确定如何调用嵌套元素,我只想要嵌套 ID 中的 audio_controls 而不是其他类)。

有人对我有什么想法吗?

最佳答案

你可以用 CSS 做到这一点:

#whats-new-post-in-box > .audio_controls.fresh {
    display: none !important;
}

!important 样式规则可以覆盖内联样式规则(除非内联样式规则也是 !important)。

或者,在 any modern browser 上使用 JavaScript :

var list = document.querySelectorAll("#whats-new-post-in-box .audio_controls.fresh");
var n;
for (n = 0; n < list.length; ++n) {
    list[n].style.display = "none";
}

对于较旧的浏览器,这更痛苦:

var elm = document.getElementById("whats-new-post-in-box").firstChild;
while (elm) {
    if (elm.className &&
        elm.className.match(/\baudio_controls\b/) &&
        elm.className.match(/\bfresh\b/)) {

        elm.style.display = "none";
    }
    elm = elm.nextSibling;
}

显然,对于这两个 JS 解决方案,您需要在 首先设置样式的任何内容之后运行该代码...

关于javascript - 试图覆盖动态生成的内联样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19366227/

相关文章:

javascript - 如何在 Angular 5 中使用 Material 步进器

javascript - HTML 按钮单击打开 Manychat 机器人

html - 修复 Bootstrap 中的页脚

html - 我怎样才能添加div的平滑三 Angular 形底部

javascript - 如何在 jquery 中以百分比设置宽度 100%

javascript - 根据 csv 文件 : Highcharts 中的 x 轴值绘制 Y 轴数据

javascript - 需要帮助使用 Javascript 获取要填充的字段

javascript - 执行 abc.p = undefined 和删除 abc.p 到底有什么区别

html - Flexbox 下拉菜单的位置和移动

css - 垂直对齐表格 <th> 中的 div