Javascript 在html中隐藏和显示div块

Javascript 在html中隐藏和显示div块,javascript,html,Javascript,Html,我是html的初学者,在下面的代码中,我尝试使用div块隐藏和显示内容。我可以隐藏/显示第二个div块,但单击第一个div块时它不起作用!不知道哪里出了问题。任何帮助都将不胜感激 函数隐藏(which) { 如果(!document.getElementById) 回来 if(哪个.style.display==“块”) which.style.display=“无” 其他的 which.style.display=“block” } 现在你看到我了 你好 现在你看到我了 你好 尝试删除a标

我是html的初学者,在下面的代码中,我尝试使用div块隐藏和显示内容。我可以隐藏/显示第二个div块,但单击第一个div块时它不起作用!不知道哪里出了问题。任何帮助都将不胜感激


函数隐藏(which)
{
如果(!document.getElementById)
回来
if(哪个.style.display==“块”)
which.style.display=“无”
其他的
which.style.display=“block”
}
现在你看到我了
你好
现在你看到我了
你好

尝试删除a标记,然后在div块上添加

onclick="hideshow(document.getElementById('adiv'))"
如果它不起作用,请使用jquery。使用jquery获取元素的步骤

$("#adiv1") for example
要隐藏,就要做

$("#adiv1").hide()
显示:

$("#adiv1").show()

尝试删除a标记,然后在div块上添加

onclick="hideshow(document.getElementById('adiv'))"
如果它不起作用,请使用jquery。使用jquery获取元素的步骤

$("#adiv1") for example
要隐藏,就要做

$("#adiv1").hide()
显示:

$("#adiv1").show()

您的HTML不正确:

<table>
 <tr><td><a href="javascript:hideshow(document.getElementById('adiv1'))"><label class="menuOff" style="font-size: 35px;">Div block 1</label></a></td></tr>

 <!-- You can't have a div here -->
 <div id="adiv1" style="font:24px bold; display: none;">

你是不是想在那里再放一排桌子

 <tr>
 <td>
     <div id="adiv1" style="font:24px bold; display: none;">
 </td>
 </tr>


同样的问题也适用于第二个div元素

您的HTML不正确:

<table>
 <tr><td><a href="javascript:hideshow(document.getElementById('adiv1'))"><label class="menuOff" style="font-size: 35px;">Div block 1</label></a></td></tr>

 <!-- You can't have a div here -->
 <div id="adiv1" style="font:24px bold; display: none;">

你是不是想在那里再放一排桌子

 <tr>
 <td>
     <div id="adiv1" style="font:24px bold; display: none;">
 </td>
 </tr>


同样的问题也适用于第二个div元素

我建议您研究JQuery框架提供的
切换
函数

主要的问题似乎是您的HTML不正确,您在table元素中放置了一个div,这使它成为一个直接的子元素

这当然会引发一个重大错误

我为您做了一个JSFIDLE示例

HTML:

CSS:


我建议您研究JQuery框架提供的
toggle
函数

主要的问题似乎是您的HTML不正确,您在table元素中放置了一个div,这使它成为一个直接的子元素

这当然会引发一个重大错误

我为您做了一个JSFIDLE示例

HTML:

CSS:


问题不在于javascript,而在于HTML,它是无效的。您的javascript虽然有点奇怪(为什么要检查getElementById是否存在?您使用它来调用函数!),但还可以

问题是你的div漂浮在两个TR的中间。一个表结构是:

<table>
  <tr> // a row
   <td></td> // one cell
  </tr> // end of a row
</table> end of table

//一排
//单细胞
//行尾
桌尾
当您将内容放在行之间时,会发生未定义的行为。例如,如果您在Chrome中检查DOM,您将看到您的div实际上是空的,并且文本(您放在另一个表中,我的眼睛…)已经从中“转义”。这就是为什么当你点击时它什么也不做:样式被更新了,但里面什么都没有


有趣的是:如果你只修复了第一个DIV,那么第二个DIV将开始不工作。这完全取决于浏览器如何解析无效的HTML,这有点随机。始终关闭标签,并始终确保遵循基本结构。。。就像把TR放在UL中而不是LI中一样(我已经看到了)。

问题不在于javascript,而在于HTML,它是无效的。您的javascript虽然有点奇怪(为什么要检查getElementById是否存在?您使用它来调用函数!),但还可以

问题是你的div漂浮在两个TR的中间。一个表结构是:

<table>
  <tr> // a row
   <td></td> // one cell
  </tr> // end of a row
</table> end of table

//一排
//单细胞
//行尾
桌尾
当您将内容放在行之间时,会发生未定义的行为。例如,如果您在Chrome中检查DOM,您将看到您的div实际上是空的,并且文本(您放在另一个表中,我的眼睛…)已经从中“转义”。这就是为什么当你点击时它什么也不做:样式被更新了,但里面什么都没有


有趣的是:如果你只修复了第一个DIV,那么第二个DIV将开始不工作。这完全取决于浏览器如何解析无效的HTML,这有点随机。始终关闭标签,并始终确保遵循基本结构。。。就像将TR放在UL中而不是LI中(我已经看到了)。

html的结构是:

<table> <!-- to delete -->
    <div>
        <table>
        </table>
    </div>
    <div>
        <table>
        </table>
    </div>
</table> <!-- to delete -->


这是不正确的,当您删除额外的“table”标记时,它工作正常

html的结构是:

<table> <!-- to delete -->
    <div>
        <table>
        </table>
    </div>
    <div>
        <table>
        </table>
    </div>
</table> <!-- to delete -->


这是不正确的,当您删除额外的“table”标记时,它工作正常

您在标记嵌套上有一些错误。
下面是标签较少的示例。
两个按钮,每个按钮隐藏/显示不同的div

<!doctype html>
<!-- do not forget to declare type! -->
<html>
    <head>
        <title> Hide/show div</title>
        <script type="text/javascript">
            function HideShow(which)
            {
                if (which.style.display=="block")
                    which.style.display="none"
                else
                    which.style.display="block"
            }
        </script>
    </head>
    <body>

    <button onclick = 'HideShow(document.getElementById("div1"));'>Hide/Show div 1</button>
    <div id='div1' style='display:block'>This data is in div 1</div>
    <br>
    <button onclick = 'HideShow(document.getElementById("div2"));'>Hide/Show div 2</button>
    <div id='div2' style='display:block'>This data is in div 2</div>
    </body>
</html>

隐藏/显示分区
函数隐藏(which)
{
if(哪个.style.display==“块”)
which.style.display=“无”
其他的
which.style.display=“block”
}
隐藏/显示分区1
该数据位于第1部分

隐藏/显示分区2 该数据在第2部分中
您在标签嵌套上有一些错误。
下面是标签较少的示例。
两个按钮,每个按钮隐藏/显示不同的div

<!doctype html>
<!-- do not forget to declare type! -->
<html>
    <head>
        <title> Hide/show div</title>
        <script type="text/javascript">
            function HideShow(which)
            {
                if (which.style.display=="block")
                    which.style.display="none"
                else
                    which.style.display="block"
            }
        </script>
    </head>
    <body>

    <button onclick = 'HideShow(document.getElementById("div1"));'>Hide/Show div 1</button>
    <div id='div1' style='display:block'>This data is in div 1</div>
    <br>
    <button onclick = 'HideShow(document.getElementById("div2"));'>Hide/Show div 2</button>
    <div id='div2' style='display:block'>This data is in div 2</div>
    </body>
</html>

隐藏/显示分区
函数隐藏(which)
{
if(哪个.style.display==“块”)
which.style.display=“无”
其他的
which.style.display=“block”
}
隐藏/显示分区1
该数据位于第1部分

隐藏/显示分区2 该数据在第2部分中
@mdesdev:这与为什么此代码不起作用完全无关,在HTML有效之前,
slideToggle()
也不会起作用@弗朗索瓦·瓦尔是的,你说得对;)@aarish:在浏览器控制台中检查代码,在
元素
选项卡下,您可以看到您的HTML与您最初声明的HTML相比已经发生了更改。原因