Javascript 第一次查看输出时未能隐藏文本 函数隐藏(which){ 如果(!document.getElementById) 返回 if(哪个.style.display==“块”) which.style.display=“无” 其他的 which.style.display=“block” } 信用卡 检查

Javascript 第一次查看输出时未能隐藏文本 函数隐藏(which){ 如果(!document.getElementById) 返回 if(哪个.style.display==“块”) which.style.display=“无” 其他的 which.style.display=“block” } 信用卡 检查,javascript,html,css,Javascript,Html,Css,程序的输出必须是: 当我们选中复选框时,它应该显示文本,当复选框未选中时,它应该隐藏文本。 在这种情况下,当我们第一次打开输出时,文本显示时没有选中复选框。 有人能解释一下为什么会这样吗?首先,您的标记是无效的。具体而言,这: <html> <head> <script type="text/javascript"> function hideshow(which){ if (!document.ge

程序的输出必须是: 当我们选中复选框时,它应该显示文本,当复选框未选中时,它应该隐藏文本。 在这种情况下,当我们第一次打开输出时,文本显示时没有选中复选框。
有人能解释一下为什么会这样吗?

首先,您的标记是无效的。具体而言,这:

<html>
   <head>
      <script type="text/javascript">
         function hideshow(which){
            if (!document.getElementById)
               return
            if (which.style.display=="block")
               which.style.display="none"
            else
               which.style.display="block"
         }
      </script>
   </head>
   <body>
     credit card
     <a href="javascript:hideshow(document.getElementById('adiv123'))">
        <input type="checkbox"  />
     </a>   
     <div id="adiv123" style="font:24px normal; style=display:block;">
        check
           <input type="text" name="check" class="styled"/>
     </div>
   </body>
</html>
这是错误的。我想你的意思是:

style="font:24px normal; style=display:block;"
如果您希望在页面加载时隐藏元素,那么实际上您希望:

style="font:24px normal; display:block;"

首先,您的标记是无效的。具体而言,这:

<html>
   <head>
      <script type="text/javascript">
         function hideshow(which){
            if (!document.getElementById)
               return
            if (which.style.display=="block")
               which.style.display="none"
            else
               which.style.display="block"
         }
      </script>
   </head>
   <body>
     credit card
     <a href="javascript:hideshow(document.getElementById('adiv123'))">
        <input type="checkbox"  />
     </a>   
     <div id="adiv123" style="font:24px normal; style=display:block;">
        check
           <input type="text" name="check" class="styled"/>
     </div>
   </body>
</html>
这是错误的。我想你的意思是:

style="font:24px normal; style=display:block;"
如果您希望在页面加载时隐藏元素,那么实际上您希望:

style="font:24px normal; display:block;"
请看这里:

代码

style="font:24px normal; display:none;"
或者,根据您的代码:

我改变了这一点:

document.getElementById("adiv123").style.display = "none";
document.getElementById("showHide").onchange = function(){
    if(this.checked)
         document.getElementById("adiv123").style.display = "block";
    else
        document.getElementById("adiv123").style.display = "none";
}

对此

<div id="adiv123" style="font:24px normal; style=display:block;">

看看这里:

代码

style="font:24px normal; display:none;"
或者,根据您的代码:

我改变了这一点:

document.getElementById("adiv123").style.display = "none";
document.getElementById("showHide").onchange = function(){
    if(this.checked)
         document.getElementById("adiv123").style.display = "block";
    else
        document.getElementById("adiv123").style.display = "none";
}

对此

<div id="adiv123" style="font:24px normal; style=display:block;">

之所以会发生这种情况,是因为在单击复选框之前(为什么要将其包装成链接?),您不会运行
隐藏
功能。因此,在页面加载之后,无论复选框元素的状态如何,都会始终显示相邻的div

无论如何,如果您不支持IE8和以前的版本,那么您只能通过css实现相同的行为。例如

html


之所以会出现这种情况,是因为在单击复选框(为什么要将其包装成链接)之前,您不会运行
hideshow
功能。因此,在页面加载之后,无论复选框元素的状态如何,都会始终显示相邻的div

无论如何,如果您不支持IE8和以前的版本,那么您只能通过css实现相同的行为。例如

html