2016-08-24 164 views
0

我其实需要帮助来纠正我的代码。我观看了YouTube上的视频,但在该视频中,他使用复选框而不是按钮。所以我有问题的JavaScript的if语句。我已经检查了以前的帖子有同样的问题,但找不到可以解决我的问题的帖子。请帮帮我。非常感谢。如何使用javascript单击按钮时隐藏/显示表单?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Untitled Document</title> 
    <link href="css/tabMenu.css" rel="stylesheet" type="text/css" /> 

    <style> 
     .hidden { 
      display:none;} 
    </style> 
    <script type="text/javascript"> 
     function showHide() 
     { 
      var button = document.getElementById("butt"); 
      var hiddeninput = document.getElementByClassName("hidden"); 

       if(button.click) 
       { 
        hiddeninput.style.display = "block"; 
       } 
       else 
       { 
        hiddeninput.style.display = "none"; 
       } 
     } 

    </script> 

    </head> 

    <body> 
    <div id="navbar"> 
    <div id="holder"> 

    <ul> 
    <li><a href="employee.php" id="onlink">Employer Database</a></li> 
    <li><a href="companypresence.php">Company Presence</a></li> 
    <li><a href="companypromotion.php">Company Promotion</a></li> 
    </ul> 



    </div><!--end of holder div --> 
    </div><!--end of navbar div --> 

    </br> 

    <p id="p1"><u>Employer List</u></p> 
    </br> 


    <table width="1345" height="113" border="1" id="table1"> 
     <tr id="tr1"> 
     <th width="46" height="35" scope="col">No.</th> 
     <th width="93" scope="col">Title</th> 
     <th width="157" scope="col">First Name</th> 
     <th width="171" scope="col">Last Name</th> 
     <th width="128" scope="col">Position</th> 
     <th width="130" scope="col">Sector</th> 
     <th width="178" scope="col">Company Name</th> 
     <th width="107" scope="col">Country</th> 
     <th width="97" scope="col">Email</th> 
     <th width="78" scope="col">Phone</th> 
     <th width="84" scope="col">Action</th> 
     </tr> 
     <tr> 
     <td height="34">&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     </tr> 
     <tr> 
     <td height="34">&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     </tr> 
    </table> 
    <br/> 
    <input name="addbutton" type="button" value="Add Employer" id="butt" onclick="showHide()"/> 
    <br/> 
    <br/> 
    <br/> 
    <form id="form1" action="add_employer.php" method="post" class="hidden"> 
    <p align="left"><u><strong>Add Employer Detail</strong></u></p> 
    <br/> 
    <br/> 
    <TABLE cellpadding="5" cellspacing="2" align="center"> 
        <TR> 
         <td><strong>Title </strong></td> 
         <td><strong>: 
         <input name="title" value="" type="text" size="50" maxlength="50"> 
         </strong></td> 
        </TR> 
        <TR> 
         <td><strong>First Name </strong></td> 
         <td><strong>: 
         <input name="first_name" value="" type="text" size="50" maxlength="50"> 
         </strong></td> 
        </TR> 
        <TR> 
         <td><strong>Last Name</strong></td> 
         <TD><strong>: 
         <input name="last_name" value="" type="text" size="50" maxlength="50"> 
         </strong></TD> 
        </TR> 
        <TR> 
         <td><strong>Position</strong></td> 
         <TD><strong>: 
         <input name="position" value="" type="text" size="50" maxlength="50"> 
         </strong></TD> 
        </TR> 
        <TR> 
         <td><strong>Sector</strong></td> 
         <TD><strong>: 
         <input name="sector" value="" type="text" size="50" maxlength="50"> 
         </strong></TD> 
        </TR> 
        <TR> 
         <td><strong>Company Name</strong></td> 
         <TD><strong>: 
         <input name="company_name" value="" type="text" size="50" maxlength="50"> 
         </strong></TD> 
        </TR> 
        <TR> 
         <td><strong>Country</strong></td> 
         <TD><strong>: 
         <input name="country" value="" type="text" size="50" maxlength="50"> 
         </strong></TD> 
        </TR> 
        <TR> 
         <td><strong>Email</strong></td> 
         <TD><strong>: 
         <input name="email" value="" type="text" size="50" maxlength="50"> 
         </strong></TD> 
        </TR> 
        <TR> 
         <td><strong>Phone</strong></td> 
         <TD><strong>: 
         <input name="phone" value="" type="text" size="50" maxlength="50"> 
         </strong></TD> 
        </TR> 
        <TR> 
         <td><strong>Action</strong></td> 
         <TD><strong>: 
         <input name="action" value="" type="text" size="50" maxlength="50"> 
         </strong> 
         <input name="addbutton" type="button" value="Add Employer"/> 
         <input name="clear" type="button" value="Clear"/> 
         </TD> 

        </TR>    

       </TABLE> 
    <br/> 
    <br/>  
    </form> 



    </body> 
    </html> 
+0

你婉到达这里切换效果,即先点击表格上会得到显示和第二次点击它会得到隐藏的等等? – Ruhul

+0

'getElementByClassName'不是一个函数。 'getElementsByClassName'是并返回一个节点列表。使用'[0]'访问第一个元素。你也可以使用可见性CSS属性 – Li357

回答

-1

你可以使用jQuery。

隐藏在按钮上的onClick事件中执行此操作。

$(".target").hide(); 

有关显示

$(".target").show(); 
+1

但是当OP使用vanilla JS并且没有提及它时,jQuery有什么意义? – Li357

+0

如果您检查问题中显示的代码,OP已经有代码来处理实际的隐藏和显示,但似乎在适当的时候运行该代码时遇到问题。 – nnnnnn

1

既然你隐藏的元素带班,可以显示并通过删除并重新添加类隐藏它。该classList.toggle方法*将这样做:

function hide(id) { 
 
    var el = document.getElementById(id); 
 
    if (el && el.classList) { 
 
    el.classList.toggle('hidden'); 
 
    } 
 
    
 
}
<style type="text/css"> 
 
    .hidden { 
 
    display: none; 
 
    } 
 
</style> 
 

 
<body> 
 
    
 
<input id="foo"><br> 
 
<button onclick="hide('foo')">Hide input</button> 
 

 
    
 
    
 
    
 
    
 
</body>

*注意参考MDN包括Element.classList一个填充工具以支持旧版浏览器。

+0

我不认为将'.style.display'设置为空字符串将显示该元素,因为它当前通过类隐藏。 – nnnnnn

+0

@ nnnnnn-yep,oops ... – RobG

+0

P.S.关于三元运算符可能是一个维护问题的说明,这是一个意见问题,但我个人认为它使得代码更清晰:它可以让你读代码为“将该属性设置为[某些计算值]“,相比之下,”评估该财产和做x其他y“,然后它需要额外的时间来认识到,实际上x和y只是设置相同的属性。它也恰好变短的事实仅仅是一种奖励。 – nnnnnn

1

您可以使用id来定位form并添加删除class以显示隐藏表格。

<style> 
     .hidden { 
      display:none;} 

    </style> 

    <script type="text/javascript"> 
     function showHide() { 
      var hiddeninput = document.getElementById("form1"); 
      if (hiddeninput.classList.contains("hidden")) { 
       hiddeninput.classList.remove("hidden"); 
      } 
      else { 
       hiddeninput.classList.add("hidden"); 
      } 
     } 

    </script> 
0

这个怎么样???

function showHide() { 
 
    var button = document.getElementById("butt"); 
 
    var hiddeninput = document.getElementsByClassName("hidden"); 
 
    var form1 = document.getElementById("form1"); 
 
    if (form1 && form1.style.display=="none") { 
 
    form1.style.display = "block";  
 
    } else { 
 
    form1.style.display = "none"; 
 
    } 
 
}
<div id="navbar"> 
 
    <div id="holder"> 
 

 
    <ul> 
 
     <li><a href="employee.php" id="onlink">Employer Database</a> 
 
     </li> 
 
     <li><a href="companypresence.php">Company Presence</a> 
 
     </li> 
 
     <li><a href="companypromotion.php">Company Promotion</a> 
 
     </li> 
 
    </ul> 
 
    </div> 
 
    <!--end of navbar div --> 
 

 
    </br> 
 

 
    <p id="p1"><u>Employer List</u> 
 
    </p> 
 
    </br> 
 

 

 
    <table width="1345" height="113" border="1" id="table1"> 
 
    <tr id="tr1"> 
 
     <th width="46" height="35" scope="col">No.</th> 
 
     <th width="93" scope="col">Title</th> 
 
     <th width="157" scope="col">First Name</th> 
 
     <th width="171" scope="col">Last Name</th> 
 
     <th width="128" scope="col">Position</th> 
 
     <th width="130" scope="col">Sector</th> 
 
     <th width="178" scope="col">Company Name</th> 
 
     <th width="107" scope="col">Country</th> 
 
     <th width="97" scope="col">Email</th> 
 
     <th width="78" scope="col">Phone</th> 
 
     <th width="84" scope="col">Action</th> 
 
    </tr> 
 
    <tr> 
 
     <td height="34">&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
    </tr> 
 
    <tr> 
 
     <td height="34">&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
    </tr> 
 
    </table> 
 
    <br/> 
 
    <input name="addbutton" type="button" value="Add Employer" id="butt" onclick="showHide()" /> 
 
    <br/> 
 
    <br/> 
 
    <br/> 
 

 
    <form id="form1" action="add_employer.php" method="post" style="display: none;"> 
 
    <p align="left"><u><strong>Add Employer Detail</strong></u> 
 
    </p> 
 
    <br/> 
 
    <br/> 
 
    <TABLE cellpadding="5" cellspacing="2" align="center"> 
 
     <TR> 
 
     <td><strong>Title </strong> 
 
     </td> 
 
     <td><strong>: 
 
         <input name="title" value="" type="text" size="50" maxlength="50"> 
 
         </strong> 
 
     </td> 
 
     </TR> 
 
     <TR> 
 
     <td><strong>First Name </strong> 
 
     </td> 
 
     <td><strong>: 
 
         <input name="first_name" value="" type="text" size="50" maxlength="50"> 
 
         </strong> 
 
     </td> 
 
     </TR> 
 
     <TR> 
 
     <td><strong>Last Name</strong> 
 
     </td> 
 
     <TD><strong>: 
 
         <input name="last_name" value="" type="text" size="50" maxlength="50"> 
 
         </strong> 
 
     </TD> 
 
     </TR> 
 
     <TR> 
 
     <td><strong>Position</strong> 
 
     </td> 
 
     <TD><strong>: 
 
         <input name="position" value="" type="text" size="50" maxlength="50"> 
 
         </strong> 
 
     </TD> 
 
     </TR> 
 
     <TR> 
 
     <td><strong>Sector</strong> 
 
     </td> 
 
     <TD><strong>: 
 
         <input name="sector" value="" type="text" size="50" maxlength="50"> 
 
         </strong> 
 
     </TD> 
 
     </TR> 
 
     <TR> 
 
     <td><strong>Company Name</strong> 
 
     </td> 
 
     <TD><strong>: 
 
         <input name="company_name" value="" type="text" size="50" maxlength="50"> 
 
         </strong> 
 
     </TD> 
 
     </TR> 
 
     <TR> 
 
     <td><strong>Country</strong> 
 
     </td> 
 
     <TD><strong>: 
 
         <input name="country" value="" type="text" size="50" maxlength="50"> 
 
         </strong> 
 
     </TD> 
 
     </TR> 
 
     <TR> 
 
     <td><strong>Email</strong> 
 
     </td> 
 
     <TD><strong>: 
 
         <input name="email" value="" type="text" size="50" maxlength="50"> 
 
         </strong> 
 
     </TD> 
 
     </TR> 
 
     <TR> 
 
     <td><strong>Phone</strong> 
 
     </td> 
 
     <TD><strong>: 
 
         <input name="phone" value="" type="text" size="50" maxlength="50"> 
 
         </strong> 
 
     </TD> 
 
     </TR> 
 
     <TR> 
 
     <td><strong>Action</strong> 
 
     </td> 
 
     <TD><strong>: 
 
         <input name="action" value="" type="text" size="50" maxlength="50"> 
 
         </strong> 
 
      <input name="addbutton" type="button" value="Add Employer" /> 
 
      <input name="clear" type="button" value="Clear" /> 
 
     </TD> 
 

 
     </TR> 
 

 
    </TABLE> 
 
    <br/> 
 
    <br/> 
 
    </form>

+1

这与OP的不同之处在于,该元素用类隐藏,而不是显示属性。虽然它有效,但应该解释不同的方法,并讨论与OP相关的利弊。 – RobG

相关问题