Anzeige:
Ergebnis 1 bis 4 von 4

Thema: [Javascript] Probs mit Show/Hide in IE

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.08.2002
    Ort
    Haiger am Niel *g*
    Beiträge
    74

    Unhappy [Javascript] Probs mit Show/Hide in IE

    Hi all,
    ich habe mir dieses Show/Hide Script für Tabellenzeilen geschrieben, es läuft in allen Browsern prima (Mozilla Firefox, Konqueror, Netscape), außer im MS Internet-Explorer (getestet mit v6.0). Dort passiert einfach gar nichts. Kann mir jemand irgend nen Tip geben warum? Die getElementsByName-funktion scheint nichts zurückzuliefern, aber warum?
    Code:
    <html>
    <head>
    <script language="javascript" type="text/javascript">
    <!--
    function toggleRow(row)
    {
    	for (i = 0; i < document.getElementsByName(row).length; i++) {
    		var el = document.getElementsByName(row)[i];
    		if (el.className) {
    			el.className = (el.className == 'rowOpened') ? 'rowClosed' : 'rowOpened';
    		}
    	}
    	return false;
    }
    //-->
    </script>
    <style type="text/css">
    <!--
    .rowOpened {
      display: block;
    }
    .rowClosed {
      display: none;
    }
    //-->
    </style>
    </head>
    <body>
    <table bgcolor=lightgrey>
    	<tr>
    		<td colspan="2"><table><tr><td><a href="#" onClick="return toggleRow('row2');">Zeile2 an/aus</a></td></tr></table></td>
    	</tr>
    	<tr>
    		<td><div name="row2" class="rowOpened"><table><tr><td>Zeile2.1</td></tr></table></div></td>
    		<td><div name="row2" class="rowOpened"><table><tr><td>Zeile2.2</td></tr></table></div></td>
    	</tr>
    </table>
    </body>
    </html>
    Thx4help
    [Workstation]Intel Core2 Duo E8400/4GB, ATI HD4830 @ kUbuntu/Win7pro
    [Server] Via Epia SP13000/512MB @ Ubuntu LTS Server
    [Mobil] Intel Pentium M 1,86Ghz/512MB/ATI X600M (Asus M6974VLP) @ xUbuntu

  2. #2
    Registrierter Benutzer
    Registriert seit
    25.12.2004
    Beiträge
    217
    Hallo ~Gh05t~,

    hab eben mal in Selfhtml nachgeschaut und entdeckt das das "name"-Attribut in einem div-Tag nicht vorkommen "darf".

    Dein Beispiel funktioniert im IE mit input-Tags.
    getElementsByName() - Selfhtml

    Habe von den Problem erlich gesagt noch nie gehört deshalb fällt mir als Lösung entweder:

    Alle div-Tags mit "id"-Attribut versehen und dann einzeln durchgehen(in nem Array/Objekt)

    oder:

    Ein div-Tag um die Tabelle bauen, dem eine ID geben, dann per getElementsByTagName() das "node"-Objekt durchlaufen und die "name"-Attribute abprüfen.

    http://de.selfhtml.org/javascript/ob...ts_by_tag_name

    Vielleicht kennt jemand noch eine bessere Lösung....

    Gruß

    nEox

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.08.2002
    Ort
    Haiger am Niel *g*
    Beiträge
    74
    *DOH!*
    Da hab ich jetzt gar nicht dran gedacht, aber du hast recht...

    Naja,das verkompliziert die Sache... mein Problem ist, dass die Tabelle dynamisch von einem PHP-Script generiert werden soll, analog auch mit dynamischen Zeilen- und Spalten-anzahlen.
    Mit nodes arbeite ich in diesem Fall äußerst ungern, da die u.a. von der Formatierung des HTML-Codes abhängen.
    Schön wäre es, wenn sowas ginge:
    Code:
    function toggleRow(row) {
        element = document.getElementById(row);
        el = element.getElementsByTagName('table');
        for(i = 0; i < el.length; i++) {
            if(el[i].className) {
                el[i].className = (el[i].className == 'rowOpened') ? 'rowClosed' : 'rowOpened';
            }
        }
        return false;
    }
    Dann könnte ich mir den div-tag schenken und einfach dem tr-tag ne ID geben und den darinliegenden Tables die entsprechende class zuordnen.

    Wenn ich das ganze mit Nodes mache habe ich schon das Problem, dass ein Zeilenumbruch als childNode gewertet wird. Dann verliere ich mich in abfragen, unter- bzw. recursiv-schleifen. Dazu kenn ich mich mit Javascript zu wenig aus, wie kann ich denn ein Object-dump machen und ausgeben (damit ich mal weis was mein objekt für eigenschaften hat)?
    [Workstation]Intel Core2 Duo E8400/4GB, ATI HD4830 @ kUbuntu/Win7pro
    [Server] Via Epia SP13000/512MB @ Ubuntu LTS Server
    [Mobil] Intel Pentium M 1,86Ghz/512MB/ATI X600M (Asus M6974VLP) @ xUbuntu

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.12.2004
    Beiträge
    217
    Hi ~Gh05t~,

    IDs sind halt einmalig. Könnte es evtl. gehen wenn du wie du schon gesagt hast dem table-Tag ne id gibst und dann die tr-Tags oder td-Tags durchläufst?

    Also die Nodes durchgehen und dann alle vom Typ "tr" (oder "td" wenn du eine toggleCol-Funktion machen willst) auf den CSS-Klassennamen prüfen.
    http://de.selfhtml.org/javascript/ob....htm#node_type

    Ist halt leider nicht so schön, aber was andres fällt mir jetzt nicht ein

    wie kann ich denn ein Object-dump machen und ausgeben (damit ich mal weis was mein objekt für eigenschaften hat)?
    Das geht mit ner Schleife:
    Code:
    for (property in objectname)
    alert('name' + property + ' type:' + typeof(property));
    Alert() könnte auf Dauer etwas nerven, document.write() tuts auch

    Gruß nEox

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •