<tr> auf hidden setzen bei Funktionsaufruf
Helge
- javascript
Hallo ich verzweifel hier fast noch...
ich möchte nach einem click ein <tr> </tr> auf hidden setzen.
Nur das funktioniert bei mir nicht?
Was ist daran falsch?
<script type="text/javascript">
<!--
function del()
{
var liste = document.aktiv;
var len = liste.elements.length;
for (var i = 0; i < len; i++)
{
document.getElementsByName("aktiv")[0].style.visibility = "hidden";
}
}
</script>
<table width="100" border="2">
<tr style="visibility:show" name="aktiv">
<td> </td>
</tr>
<tr style="visibility:show" name="aktiv">
<td> </td>
</tr>
<tr style="visibility:show" name="aktiv">
<td> </td>
</tr>
</table>
<p><a href="#" onClick="del()" >löschen</a></p>
Fehler:
elements ist Null oder kein Objekt
Hi,
<script type="text/javascript">
<!--function del()
{
var liste = document.aktiv;
Ich bezweifle, daß dieses Objekt verfügbar ist.
var len = liste.elements.length;
Hier wird für irgendeine Liste eine Länge ermittelt, die
for (var i = 0; i < len; i++)
{
document.getElementsByName("aktiv")[0].style.visibility = "hidden";
dann als Maximalindex für eine komplett andere Liste verwendet wird.
Die Liste document.getElementsByName("aktiv") müßte m.E. leer sein, denn:
<tr style="visibility:show" name="aktiv">
das tr-Element hat kein name-Attribut.
cu,
Andreas
Wenn ich es so mache wie das Script unten geht es aber ich möchte gerne document.getElementById("aktiv")[1].style.visibility = "hidden";
oder
document.getElementById("aktiv")[2].style.visibility = "hidden";
einzeln auschalten das funktioniert bei mir nicht!?
---
<script type="text/javascript">
<!--
function del()
{
//var liste = document.aktiv;
//var len = liste.elements.length;
//for (var i = 0; i < len; i++)
// {
if(document.getElementById)
document.getElementById("aktiv").style.visibility = "hidden";
// }
}
</script>
<table width="100" border="2">
<tr style="visibility:show" id="aktiv">
<td> </td>
</tr>
<tr style="visibility:show" id="aktiv">
<td> </td>
</tr>
<tr style="visibility:show" id="aktiv">
<td> </td>
</tr>
</table>
<p><a href="#" onClick="del()" >löschen</a></p>
Hi,
Wenn ich es so mache wie das Script unten geht es aber ich möchte gerne document.getElementById("aktiv")[1].style.visibility = "hidden";
wie soll das funktionieren?`
Eine id darf höchstens einmal vorkommen, getElementById darf daher kein Array zurückliefern - es kann ja nur entweder ein Element oder kein Element mit dieser Id geben.
cu,
Andreas
Und mit Name geht das ja auch nicht.
Wie löse ich das dann?
Hi,
Und mit Name geht das ja auch nicht.
Wie löse ich das dann?
Wie wärs mit verschiedenen Id-Werten?
cu,
Andreas
Das ist bei mir nicht möglich
Wie wärs mit verschiedenen Id-Werten?
ich habe es nun so gelöst:
document.getElementsByTagName("tr")[2].firstChild.style.visibility = "hidden";
document.getElementsByTagName("tr")[2].firstChild.style.visibility = "hidden";
Nur weiß ich immer noch nicht wie das richtge tr lösche?
Das heißt in jedem tr steht ein link und wenn der geklickt wird soll das tr gelöscht werden.
wie frage ich nun ab, welcher link geklickt wurde oder welches tr gemeint ist?
Hi Helge :)
ich hab hier mal was für dich :)
<html>
<head>
<script type="text/javascript" language="JavaScript">
/* Funktion zum verstecken eines Verweises (= Link) */
function LinkVerstecken (Zeile)
{
/* Manche Browser, vorallem ätlere kennen das Objekt "getElemntsByTagName" nicht!
Deshalb wird hier zuerst geprüft ob das Objekt existiert. */
if (document.getElementsByTagName)
{
/* Zuerst wieder alle Links sichtbar machen. */
for (i = 0; i < document.getElementsByTagName('tr').length; i++)
{
document.getElementsByTagName('tr')[i].style.visibility = 'visible';
}
/* Nun den Link auf den geklickt wurde verstecken. */
Zeile.style.visibility = 'hidden';
}
}
</script>
</head>
<body>
<table border=1 cellpadding=2 cellspacing=0 width=100>
<tr onclick="LinkVerstecken (this);">
<td>
Link 1
</td>
</tr>
<tr onclick="LinkVerstecken (this);">
<td>
Link 2
</td>
</tr>
<tr onclick="LinkVerstecken (this);">
<td>
Link 3
</td>
</tr>
<tr onclick="LinkVerstecken (this);">
<td>
Link 4
</td>
</tr>
<tr onclick="LinkVerstecken (this);">
<td>
Link 5
</td>
</tr>
</table>
</body>
</html>
Sobald auf eine Zeile geklickt wird... wird die Funktion zum verstecken eines Links aufgerufen. An diese Funktion wird die Zeile auf die geklickt wurde (this) übergeben.
Da vorallem ältere Browser das Objekt getElementsByTagName nicht kennen und um so JavaScript-Fehler zu vermeiden prüft die Funktion zuerst ob das Objekt wirklich existiert.
Nun werden zuerst alle Zeilen sichtbar gemacht.
Anschließend wird die betreffende Zeile versteckt.
Wie du siehst brauchst du, wenn du neue Zeilen anhängst oder dazwischen schreibst bei dem Funktionsaufruf onclick="LinkVerstecken (this);" nichts mehr zu ändern :)
Ich hab das eben aufgebaut und getestet. Funktioniert tadellos :)
Ich hoffe ich konnte dir helfen :)
LG,
Robert