Ich möchte das <table>
onClick
-Ereignis des <a>
..__ anzeigen und verbergen (umschalten). Dies ist mein <a>
-Tag
<a id="loginLink" onclick="toggleTable(true);" href="#">Login</a>
hier ist meine Java-Script-Funktion 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>
und hier ist mein <table>
-Tag
<table id="loginTable" border="1" align="center" style="display:none">
Erstes Mal, wenn ich auf den <a> link
klicke, wird meine Tabelle angezeigt, jedoch nicht versteckt, wenn ich das nächste Mal darauf klicke. was ich falsch mache.
Sie versuchen, das Verhalten von onclick
innerhalb desselben Funktionsaufrufs zu ändern. Versuchen Sie es so:
<a id="loginLink" onclick="toggleTable();" href="#">Login</a>
function toggleTable() {
var lTable = document.getElementById("loginTable");
lTable.style.display = (lTable.style.display == "table") ? "none" : "table";
}
Einfach mit Jquery
<script>
$(document).ready(function() {
$('#loginLink').click(function() {
$('#loginTable').toggle('slow');
});
})
</script>
Sie müssen Ihre Funktion wie folgt ändern:
function toggleTable()
{
if (document.getElementById("loginTable").style.display == "table" ) {
document.getElementById("loginTable").style.display="none";
} else {
document.getElementById("loginTable").style.display="table";
}
derzeit wird anhand des Parameters boolean
geprüft, Sie müssen den Parameter nicht mit Ihrer Funktion übergeben.
Sie müssen Ihr Anker-Tag wie folgt ändern:
<a id="loginLink" onclick="toggleTable();" href="#">Login</a>
innerhalb Ihrer Funktion toggleTable
, wenn Sie diese Zeile ausführen
document.getElementById("loginLink").onclick = toggleTable(....
sie rufen die Funktion tatsächlich erneut auf. toggleTable
wird erneut aufgerufen, und immer wieder fallen Sie in einen unendlichen rekursiven Aufruf.
mach es einfach.
function toggleTable()
{
var elem=document.getElementById("loginTable");
var hide = elem.style.display =="none";
if (hide) {
elem.style.display="table";
}
else {
elem.style.display="none";
}
}
siehe diese Geige
Ihr Anker-Tag sollte sein:
<a id="loginLink" onclick="showHideTable();" href="#">Login</a>
Und Sie Javascript-Funktion:
function showHideTable()
{
if (document.getElementById("loginTable").style.display == "none" ) {
document.getElementById("loginTable").style.display="";
} else {
document.getElementById("loginTable").style.display="none";
}
Die visibility
-Eigenschaft macht das Element sichtbar oder unsichtbar.
function showTable(){
document.getElementById('table').style.visibility = "visible";
}
function hideTable(){
document.getElementById('table').style.visibility = "hidden";
}
Sie übergeben immer true an die toggleMethod, daher wird die Tabelle immer "angezeigt". Ich würde eine globale Variable erstellen, die Sie stattdessen innerhalb der Toggle-Methode verwenden können.
Alternativ können Sie den Sichtbarkeitsstatus der Tabelle anstelle einer expliziten Variablen überprüfen
Versuchen
<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>