*Alex*: getElementsByName im IE

Hallo liebes Forum

Ich brauche immer wieder eine Möglichkeit in Seiten eine Gruppe von Elementen anzuzeigen bzw. auszublenden.

Am coolsten wäre es ja, wenn es Funktionen gäbe wie

document.getCSS_ClassByName("Klassenname").display = "none";

jaja, das hab ich mir schon abgeschminkt, obwohl ich nicht kapiere, wieso es soetwas naheliegendes nicht gibt.

Das zweitcoolste wäre, wenn Funktionen wie

for(var i=0;i<=666;i++)
document.getElementsByName("elemente_x")[i].style.display = "none";

im IE funktionieren würden, aber das tun sie ja offensichtlich auch nicht, es seie denn die Elemente mit dem Name-Attribut sind Formular-Elemente...

Natürlich kann ich vorschreiben, dass man meine Seite mit allem außer IE besuchen darf.

Ich kann auch jedem Elemet eine durchnummerierte ID zuweisen und dann Scripts schreiben wie

ID="StattName"
for(var i=1;i<=666;i++){
aendern=ID+i;
document.getElementById(aendern).style.display = "none";
}

Aber das ist ein Riesenaufwand bei aberhunderten Elementen.

Ich kann auch Ingos Seite http://coding.binon.net/index.htm?dhtml/cssrule.htm besuchen und mir sein cssRules runterladen, leider funktionieren damit andere JavaScript-Befehle, die auf styles zugreifen nicht mehr.

Hat jemand eine Lösung, z.B. wie man dem doofen IE beibringt _ALLE_ Elemente, die ein Name-Attribut haben mit document.getElementsByName abzuarbeiten, also auch DIVs und SPANs?

Bin für Eure Hilfe sehr dankbar!

LG *Alex*

  1. Yerf!

    Ich brauche immer wieder eine Möglichkeit in Seiten eine Gruppe von Elementen anzuzeigen bzw. auszublenden.

    Am coolsten wäre es ja, wenn es Funktionen gäbe wie

    document.getCSS_ClassByName("Klassenname").display = "none";

    Es gibt fertige Implementierungen für getElementsByClass, Google hilft weiter... Allerdings ist die Performance nicht besonders Toll.

    Wenn es nur um Ein-/Ausblenden geht, würde ich einfach die CSS-Angaben für diese Klasse per JS Ändern (geht irgendwie, kann aber grad kein Beispiel liefern).

    Gruß,

    Harlequin

    1. Hallo,

      Wenn es nur um Ein-/Ausblenden geht, würde ich einfach die CSS-Angaben für diese Klasse per JS Ändern (geht irgendwie, kann aber grad kein Beispiel liefern).

      man könnte zum Beispiel um den entsprechenden Bereich einen div-Container packen und nur diesem Container eine Klasse „versteckt“ oder so geben:

      html

        
      <div id="anzeigeSteuerung">  
         <p>Ich bin immer da</p>  
         <p class="manchmalWeg">ich kann versteckt werden</p>  
         <p class="manchmalWeg">Echt? Ich auch!</p>  
      </div>  
      
      

      css

        
      div.versteckt .manchmalWeg {  
          display: none;  
      }  
      
      

      js

        
      function verstecken() {  
          document.getElementById("anzeigeSteuerung").className = "versteckt";  
      }  
      
      

      (ungetestet)

      Gruß
      Olaf

  2. Hallo,

    Bin für Eure Hilfe sehr dankbar!

    So ungefähr mache ich das:

    var alleTags = document.getElementsByTagName("NAME_DES_TAGS");
    for (var i = 0; i < alleTags.length; i++) {
      if (alleTags[i].className == "NAME_DER_KLASSE") {
        alleTags[i].style.display = "none";
      }
    }

    Performance kann man wohl dadurch erhöhen, dass man den Bereich, der gescannt wird, weiter eingrenzt. Also z. B.:

    var alleTags = document.getElementById("ID").getElementsByTagName("NAME_DES_TAGS");

    Im if muss vielleicht noch zuvor getestet werden, ob der Tag überhaupt einen class-Attributknoten hat. Weiß ich aber nicht, musste ausprobieren.

    Hilft das?

    Grüße

    Nico

    1. Hallo Nico

      var alleTags = document.getElementsByTagName("NAME_DES_TAGS");
      for (var i = 0; i < alleTags.length; i++) {
        if (alleTags[i].className == "NAME_DER_KLASSE") {
          alleTags[i].style.display = "none";
        }
      }

      Hilft das?

      Verdammt -JA!!!

      VHD+GLG *Alex*

  3. Hallo Alex,

    Ich brauche immer wieder eine Möglichkeit in Seiten eine Gruppe von Elementen anzuzeigen bzw. auszublenden.

    Du suchst also Peter Seligers Archivposting DOM-getter und array-iteratoren - scripte schneller entwickeln zu seiner Bibliothek oft vermisster Funktionen.

    mit z.B. getElementsByClassName und anderen feinen Sachen.

    Freundliche Grüße

    Vinzenz

    1. Hello out there!

      Ich brauche immer wieder eine Möglichkeit in Seiten eine Gruppe von Elementen anzuzeigen bzw. auszublenden.

      Du suchst also Peter Seligers Archivposting DOM-getter und array-iteratoren - scripte schneller entwickeln zu seiner Bibliothek oft vermisster Funktionen.

      Vielleicht sucht er auch mein Archivposting Klassen selektieren in JavaScript. Das sollte helfen, die „oft vermissten Funktionen“ gar nicht allzusehr zu vermissen.

      See ya up the road,
      Gunnar

      --
      „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
      1. Hi Gunnar

        Vielleicht sucht er auch mein Archivposting Klassen selektieren in JavaScript. Das sollte helfen, die „oft vermissten Funktionen“ gar nicht allzusehr zu vermissen.

        YEP! Darauf bin ich auch gestoßen. Ein wenig umständlich, weil für jede Klasse eine oder mehrere "Alternativklassen" gebastelt werden müssen und der aktuelle Zustand für mehrmaliges Umschalten in Extra-Variablen gespeichert werden muss. Zwar nicht ideal, aber im Rahmen der gegebenen Möglichkeiten wenigstens praktikabel und zuverlässig.

        LG *Alex*

  4. Hello out there!

    Hat jemand eine Lösung, z.B. wie man dem doofen IE beibringt _ALLE_ Elemente, die ein Name-Attribut haben mit document.getElementsByName abzuarbeiten, also auch DIVs und SPANs?

    DIVs und SPANs dürfen in HTML 4.01 gar keine 'name'-Attribute haben. Die Doofheit liegt also nicht auf Seite des IE. ;-)

    See ya up the road,
    Gunnar

    --
    „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
  5. Hi,

    Ich kann auch Ingos Seite http://coding.binon.net/index.htm?dhtml/cssrule.htm besuchen und mir sein cssRules runterladen, leider funktionieren damit andere JavaScript-Befehle, die auf styles zugreifen nicht mehr.

    Da das meine Seite/mein Script ist: Was funktioniert anschließend nicht mehr?

    Hat jemand eine Lösung, z.B. wie man dem doofen IE beibringt _ALLE_ Elemente, die ein Name-Attribut haben mit document.getElementsByName abzuarbeiten, also auch DIVs und SPANs?

    Eine Ecke weiter: http://Coding.binon.net/Toggle arbeitet mit dem Attribut GID oder, für der Validitäts-Gläubigen, z.B. auch mit dem ID-Attribut.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  6. Hi,

    document.getCSS_ClassByName("Klassenname").display = "none";

    jaja, das hab ich mir schon abgeschminkt, obwohl ich nicht kapiere, wieso es soetwas naheliegendes nicht gibt.

    Neben den zahlreichen Implementationen die es gibt: getElementsByClssName() wird in der neuen JS-Version nativ vorhanden sein. Es empfiehlt sich also bei *byClassName-Wünschen zuerst zu testen, ob der Browser es nicht ohnehin kann, und alternativ eine der (zahlreichen) entsprechenden Funktionen zu verwenden.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!