在下面的代码中,div的display:none无效。但如果删掉前面id为poll的dt和dd元素之后,div的display就生效了。
请教一下这是什么原因呢?
<form action="" method="post">
<dl>
<dt><label for="poll">投票帖</label></dt>
<dd><input type="checkbox" id="poll" name="poll" value="1" /></dd>
<div id="poll_meta" style="display:none">
<dt><label for="poll_options">投票选项</label></dt>
<dd><textarea id="poll_options" name="poll_options"></textarea>每行一个选项,回车换行</dd>
<dt><label for="poll_number">最多可选</label></dt>
<dd><input type="text" id="poll_number" name="poll_number" value="1" /></dd>
</div>
</dl>
</form>
我晕,你玩html之前还是先看看html标签的嵌套规则吧。
Chrome,IE8-11,FF下都没有你说的这个问题,正常隐藏了。
有问题的是IE<=7的情况,看了一下代码,发现代码被完全拆乱了,成了如下效果
<FORM method=post action=""></HEAD>
<BODY>
<DL>
<DT><LABEL for=poll>投票帖</LABEL>
<DD><INPUT id=poll type=checkbox value=1 name=poll>
<DIV id=poll_meta style="DISPLAY: none"></DIV>
<DT><LABEL for=poll_options>投票选项</LABEL>
<DD><TEXTAREA id=poll_options name=poll_options></TEXTAREA>每行一个选项,回车换行
<DT><LABEL for=poll_number>最多可选</LABEL>
<DD><INPUT id=poll_number value=1 name=poll_number>
<DIV></DIV></DD></DL></FORM>
根据这段代码来看,可能是因为IE低级浏览器中不允许dt, dd, div嵌套关系的出现,我记得Chrome中是有这种类似的限制来着的(好像是p
标签中不能出现div
标签,否则会被分割)。