[英]How to toggle (hide/show) a table onClick of <a> tag in Javascript
我想显示和隐藏(切换) <a>
的<table>
onClick
事件。 这是我的<a>
标签
<a id="loginLink" onclick="toggleTable(true);" href="#">Login</a>
这是我的 Javascript 函数toggleTable(hide)
:
<script>
function toggleTable(hide)
{
if (hide) {
document.getElementById("loginTable").style.display="table";
document.getElementById("loginLink").onclick = toggleTable(false);
} else {
document.getElementById("loginTable").style.display="none";
document.getElementById("loginLink").onclick = toggleTable(true);
}
}
</script>
这是我的<table>
标签:
<table id="loginTable" border="1" align="center" style="display:none">
当我第一次单击<a> link
它会显示我的表格,但在我下次单击它时不会隐藏起来。 我究竟做错了什么?
您正试图在同一个函数调用中改变onclick
的行为。 像这样尝试:
<a id="loginLink" onclick="toggleTable();" href="#">Login</a>
function toggleTable() {
var lTable = document.getElementById("loginTable");
lTable.style.display = (lTable.style.display == "table") ? "none" : "table";
}
简单使用jquery
<script>
$(document).ready(function() {
$('#loginLink').click(function() {
$('#loginTable').toggle('slow');
});
})
</script>
您需要将您的功能修改为:
function toggleTable()
{
if (document.getElementById("loginTable").style.display == "table" ) {
document.getElementById("loginTable").style.display="none";
} else {
document.getElementById("loginTable").style.display="table";
}
目前它正在根据boolean
参数进行检查,您不必将参数与您的函数一起传递。
您需要将锚标记修改为:
<a id="loginLink" onclick="toggleTable();" href="#">Login</a>
执行此行时,在函数toggleTable
document.getElementById("loginLink").onclick = toggleTable(....
您实际上是再次调用该函数。 因此, toggleTable
被一次又一次地调用,您陷入无限递归调用中。
让它变得简单。
function toggleTable()
{
var elem=document.getElementById("loginTable");
var hide = elem.style.display =="none";
if (hide) {
elem.style.display="table";
}
else {
elem.style.display="none";
}
}
看到这个小提琴
你的锚标签应该是:
<a id="loginLink" onclick="showHideTable();" href="#">Login</a>
而你的 javascript 函数:
function showHideTable()
{
if (document.getElementById("loginTable").style.display == "none" ) {
document.getElementById("loginTable").style.display="";
} else {
document.getElementById("loginTable").style.display="none";
}
您始终将 true 传递给 toggleMethod,因此它将始终“显示”表格。 我会创建一个全局变量,您可以在切换方法中翻转它。
或者,您可以检查表的可见性状态而不是显式变量
尝试
<script>
function toggleTable()
{
var status = document.getElementById("loginTable").style.display;
if (status == 'block') {
document.getElementById("loginTable").style.display="none";
} else {
document.getElementById("loginTable").style.display="block";
}
}
</script>
visibility
属性使元素可见或不可见。
function showTable(){
document.getElementById('table').style.visibility = "visible";
}
function hideTable(){
document.getElementById('table').style.visibility = "hidden";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.