Как переключить (скрыть/показать) таблицу onClick тега <a>в java script
Я хочу показать и скрыть (переключить) событие <table>
onClick
<a>
.
это мой тег <a>
<a id="loginLink" onclick="toggleTable(true);" href="#">Login</a>
вот моя функция java script 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
, он показывает мою таблицу, но не прячется назад, когда я нажимаю ее в следующий раз. что я делаю неправильно.
Ответы
Ответ 1
Вы пытаетесь изменить поведение onclick
внутри одного и того же вызова функции. Попробуйте это следующим образом:
Якорный тег
<a id="loginLink" onclick="toggleTable();" href="#">Login</a>
JavaScript
function toggleTable() {
var lTable = document.getElementById("loginTable");
lTable.style.display = (lTable.style.display == "table") ? "none" : "table";
}
Ответ 2
Простое использование jquery
<script>
$(document).ready(function() {
$('#loginLink').click(function() {
$('#loginTable').toggle('slow');
});
})
</script>
Ответ 3
Вам нужно изменить свою функцию как:
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>
Ответ 4
внутри вашей функции 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";
}
}
см. это fiddle
Ответ 5
Ваш якорный тег должен быть:
<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";
}
Ответ 6
Вы всегда передаете true toggleMethod, поэтому он всегда будет "показывать" таблицу.
Я бы создал глобальную переменную, которую вы можете перевернуть внутри метода переключения.
В качестве альтернативы вы можете проверить состояние видимости таблицы вместо явной переменной
Ответ 7
Try
<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>
Ответ 8
visibility
свойство делает элемент видимым или невидимым.
function showTable(){
document.getElementById('table').style.visibility = "visible";
}
function hideTable(){
document.getElementById('table').style.visibility = "hidden";
}