[JavaScript] Dynamisches auslesen von Div-ids

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Flyde, 11. Dezember 2009 .

  1. 11. Dezember 2009
    Dynamisches auslesen von Div-ids

    Hi,

    ich bastel mir des öfteren ein paar kleinere javascripte um z.b. hiddendivs durchzuschalten (www.aim-sports.de die features und "latest content" ist z.b. damit gemeint)

    Aber das ist alles immer relativ steif programmiert.. ich hab den aufbau immer folgendermaßen
    HTML:
    <div id="mutterdiv">
     <div id="subdiv_1">Inhalt</div>
     <div id="subdiv_2">Inhalt2</div>
    </div>
    Aber ich müsste hierbei meinem script sagen wie viele divs es gibt.. er würde dann in einer for-schleife alle divs deaktivieren und nur die übergebene id aktivieren..

    Jetzt würd ich es aber lieber so haben:
    - Geb mir die Anzahl der Divs mit der Prefix "subdiv_"

    Das ist eher eine allgemeine umsetzungsfrage weshalb wohl mein code nicht erforderlich ist
     
  2. 11. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    nimm klassen und id's, dann kannst du dir alle divs mit der selben klasse auslesen lassen und eben durch irgend eine aktion divs mit der id "soundso" anzeigen (?) lassen.

    HTML:
    <div class="parent">
     <div class="child" id="child1">dgdfg</div>
     <div class="child" id="child2">dfsrff</div>
    </div>
    @onload via prototype.js
    Code:
    $$('div.parent div.child').each(Element.hide);
     
  3. 11. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    anmerkung:

    alle div.child in div.parent
    Code:
    $$('div.parent div.child').each(Element.hide);
    
    alle div.child auf der seite
    Code:
    $$('div.child').each(Element.hide);
    
    natürlich solltest du das script ausführen wenn die seite geladen ist, wie murdoc sagte.
    onload();

    und mit Element.id sollte dir die id zurückgegeben werden
     
  4. 11. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    ne Element.id gibts ned, das geht so: $("id").id ^^

    wenn du alle außer das erste div verstecken möchtest, kannst du das so machen:
    Code:
    $$('div.parent div.child').each(Element.hide)[0].show();
    • $$() -> dom-query, gibt einen array mit elementen zurück
    • .each() ist eine methode des objekts "array", welche alle elemente durchläuft und einen callback anwendet
    • Element.hide ist der prototype von $('element...').hide(), also das function-objekt
    • .each() gibt am ende wieder den array zurück, darum kann man mit [] auf die elemente zugreifen
    • .show() zeigt das element wieder an
     
  5. 11. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    naja, das wohl der unterschied zwischen prototype und mootools.

    mootools:
    Code:
    $$('div.parent div.child').each(function (el){
     alert (el.id);
    });
    
     
  6. 11. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    Warum verwenden hier viele Mootools oder Prototype.....jQuery ist am verbreitesten, schnellsten und die effekte/animationen einfach flüssiger.
     
  7. 11. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    kein unterschied in sicht

    Element.hide ist wie gesagt der prototyp, die funktion sieht (ungefähr) so aus:
    Code:
    Element.hide = function(element) {
     var e = $(element); //egal ob element ein string(id) oder ein html-element ist
     e.style.display = "none";
     return e;
    };
    und die function "each" erwartet einen callback.

    man könnte das auch so schreiben:
    Code:
    $$(...).each(function(element) {
     element.hide(); //element erbt die funktion Element.hide
     alert(element.id); // :-P
    });
    aber warum doppelter code

    //das ganze thema ist ein wenig komplizierter als es scheint :lol:

    protoype und jquery kannst im grunde ned vergleichen.

    jquery - hauptsache es funktioniert
    protoype - ha! ich weiß warum das funktioniert

    btw: prototype bietet keinerlei effekte/animationen, da sieht man wie gut du dich damit auseinandergesetzt hast. und von wegen schneller: der war gut.
     
  8. 12. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    danke an euch, werd ich mal testen

    Noch was: wenn man sagt "viel schneller" streiten wir uns doch hier um ms, oder?

    Also ich mein.. wir reden ja nicht von einer anwendung die 1000 user pro stunde nutzen (mal davon abgesehen das js clientseitig ist)

    Mich würde nur mal interessieren... ist die aussage geschwindigkeit bei sowas heutzutage noch relevant? (nur js sicht, nicht php )
     
  9. 12. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    kurz: nein

    aber nur solange dein script nicht "blockt", also den browser enfrieren lässt (endlosschleifen, sync-xmlhttprequests, endlos-rekursive funktionen).

    die restlichen sachen bewegen sich wirklich im ms-bereich, außer eben rendering sachen (zb.: mit der maus bewegbare elemente, ticker oder generell elemente hinzufügen/entfernen/bearbeiten) also sachen wo der browser die webseite neu bzw teilweiße neu übersetzen muss, dann kann das u.u schonmal ein wenig länger dauern. aber selbst dann hat nicht zwangsweise js schuld
     
  10. 12. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    Alle die gerne mal was zum Thema Zeit sehen wollen, dass fand ich früher mal ganz interessant:
    Frameworkes im Vergleich

    Das ganze wird nur leider nicht mehr aktualisiert..Die Version von Prototype 1.6.0.2 ist von Anfang 2008.
     
  11. 14. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    Mir ist durchaus geläufig, das prototype keine eigenen Effekte besitzt und diese erst durch z.b scriptaculous implimentiert werden.

    Soll das deine fachliche Begründung sein?

     
  12. 14. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    ja, denn wenn man sich mit prototype auseinandersetzt lernt man das grundkonzept der sprache kennen (prototypen ) - wohingegen man bei jquery im grunde nur funktionen verschachtelt ^^ (ja ich kenn jquery ned besonders gut...)

    aber, ja du hast recht, in dem bereich "dom-selector" scheint die 2008'er version langsamer zu sein, wobei das jetzt im grunde nicht mehr sein kann, da prototype ebenfalls die nativen funktionen verwendet.

    aber ich wollte dich damit ned anfahren! wenn du mit jquery gut kannst -> verwende es!
     
  13. 14. Dezember 2009
    AW: Dynamisches auslesen von Div-ids

    Ach quatsch murdoc, hast mich nich wie nen Reh angefahren, ^^ war nur etwas enttäuscht keine schöne Begründung für deine Aussagen zu bekommen

    Ich möchte ja auch keinen nötigen jquery zu verwenden :]
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.