Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 隐藏没有ID或类的div_Html_Css - Fatal编程技术网

Html 隐藏没有ID或类的div

Html 隐藏没有ID或类的div,html,css,Html,Css,我的html页面包含大量文本,包括许多div和表 在代码末尾,有一个自动创建的代码,例如: <div id="fld1_date" ... style="position:absolute;visibility:hidden"> </div> <div id="fld3_date" ... style="position:absolute;visibility:hidden"> </div> <div id="fld8_date" ...

我的html页面包含大量文本,包括许多div和表

在代码末尾,有一个自动创建的代码,例如:

<div id="fld1_date" ... style="position:absolute;visibility:hidden">

</div>
<div id="fld3_date" ... style="position:absolute;visibility:hidden">

</div>
<div id="fld8_date" ... style="position:absolute;visibility:hidden">

</div>

div没有“class”属性

问题是这些div在页面末尾创建空行。这会导致出现水平滚动,并且打印页面的时间超过1页。


ID是随机分配的,我无法使用它们。事实上,我不能以任何方式触及这些行,但必须通过CSS构建某种工作

当然,我不能覆盖CSS中的默认DIV行为,因为它会破坏所有其他DIV(还有几十个)

你知道我怎么处理吗?
(我知道设计并不完美,这是一个5000小时的程序员系统,改变它将是一个问题)

是否有一个用于div的外部容器

使用javascript和Mootools,如果是这样的话,我会做类似的事情

$('outerContainer').getElements('div').setStyle('display', 'none');
改变


如果可以的话,它不会占用任何额外的空间;您应该将这些创建的div包装在一个父div中,您应该创建并隐藏该父div;以下是如何:

<div id="mydiv">
    <div id="fld1_date" ... style="position:absolute;visibility:hidden">

    </div>
    <div id="fld3_date" ... style="position:absolute;visibility:hidden">

    </div>
    <div id="fld8_date" ... style="position:absolute;visibility:hidden">

    </div>
</div>

现在应用以下css隐藏所有内容:

<script type="text/css">
div#mydiv
{
    display:none;
}
</script>

div#mydiv
{
显示:无;
}
以下是一些想法:

  • 使用
    body>div
    display:none
    分配给body标签正下方的所有div,并手动修复“附带损害”。根据文档的结构,这可能会减少以后显式显示的div
    display:block
    ed。不过,
    选择器在IE6上不起作用
  • 使用JavaScript迭代所有div,识别违规者并将其
    显示
    值设置为
    。当然,这要求您可以添加任何JavaScript,并且您可以使用一些标准来标识div(不需要是ID,可能它们总是页面上的最后一个div,总是在页面结束标记或类似标记之后)
  • 使用条件CSS格式a la
    div[id |=fld]
    捕获id以“fld”开头的所有div。不过,我不确定这是否违反了关于ID的“我不能与他们合作”,而且它也不适用于IE6(可能是更新的,我拥有的文档太旧了,不知道)。当然,您可以在div中使用任何属性,而不仅仅是id(
    style
    ,也许?)

编辑:除了Simon的建议之外,还添加了链接:如果问题div是唯一显式设置了“可见性:隐藏”的div,则可以执行以下操作:

var divs = document.getElementsByTagName("div");
for(var i = 0; i < divs.length; i++) {
  if (divs[i].style.visibility == "hidden") {
    divs[i].parentNode.removeChild(divs[i]);
  }
}
var divs=document.getElementsByTagName(“div”);
对于(变量i=0;i

有效地从DOM中完全删除元素(可能比使用“display:none”设置每个元素的样式有更好的性能)。

如果
div
直接附加到
body
,并且它们都具有相同的ID模式,然后,您可以在此级别迭代
div
,并隐藏与模式匹配的内容:

$("body > div").each(function(i, d) {
    if ( d.id && /fld\d+_date/.test(d.id) ) {
        $(d).hide();
    }
});
如果生成的ID始终处于该模式(“fld1_日期”),并且永远不会有其他类似的模式(例如:“fld__foo_日期”),那么您可能可以通过以下方式逃脱:

$("body > div[id^=fld][id$=_date]").hide();
有关更多信息,请参见jQuery


*我所有的代码都未经测试。

“ID是随机分配的,我无法使用它们。事实上,我无法以任何方式接触这些行,但必须通过CSS构建某种工作。”因此,换言之,有人构建了一个不可能安全的框,现在无法确定如何进入。祝你好运:(你能添加任何Javascript吗?Javascript是一个问题。我还没有尝试过,但在我的脑海里它看起来很难。完全基于css会更好。如果帮助-网站应该只在IE 5.5和更高版本中工作。喜欢第三个项目背后的想法。你能详细说明一下,或者添加一个链接到某个示例吗?第三个id。)ea是最合适的,但它在IE<6的情况下不起作用。我只是接受了这个打击,因为IE6无论如何都应该被完全弃用,并继续使用它。+1div[id |=“fld”]{display:none;}应该可以做到这一点,而且在IE7和以上版本中似乎可以工作-请看,Olly已经链接了#3的属性选择器,我刚刚添加了#1的子选择器链接。Boldewyn发布了#2的JavaScript代码。我需要努力在这里添加JavaScript。最好的解决方案将完全基于css。
$("body > div").each(function(i, d) {
    if ( d.id && /fld\d+_date/.test(d.id) ) {
        $(d).hide();
    }
});
$("body > div[id^=fld][id$=_date]").hide();