Felix Riesterer: Objekt hat keinen className - wie prüfen?

Liebe Selfer,

ich habe alle <ul>s meines Dokumentes ermittelt und will nun wissen, welche eine bestimmte CSS-Klasse haben. Es scheint, als ob ich zu doof bin, ein abbruchfreies Script zu schreiben.

Mein Versuch:

<schgrippd>

  
 alle_uls = document.getElementsByTagName("ul");  
 for(i = 0; i <= alle_uls.length; i++)  
    {  
    if(alle_uls[i].className) // hier meckern FF und IE von wegen "is nich!"  
       {  
       if(alle_uls[i].className == "meine-Klasse") tue_was();  
       }  
    }  

</schgrippd>

Wie muss die Prüfung korrekt lauten, dass mir mein Interpreter nicht abbricht, wenn eine <ul> mal keine CSS-Klasse hat?

Liebe Grüße aus Ellwangen,

Felix Riesterer.

  1. Hallo,

    <schgrippd>

    alle_uls = document.getElementsByTagName("ul");
    for(i = 0; i <= alle_uls.length; i++)

    i < alle_uls.length

    if(alle_uls[i].className) // hier meckern FF und IE von wegen "is nich!"
           {
           if(alle_uls[i].className == "meine-Klasse") tue_was();
           }
        }

    
    > </schgrippd>  
      
      funktioniert bei mir einwandfrei, anfangs kannst du dir auch per alert mal alle\_uls.length ausgeben lassen.  
      
    gruss
    
    -- 
    no strict;  
    no warnings;  
      
    Ich weiss es nicht, aber ich bin mir nicht sicher.  
    Craptastic.  
    Wenn ich groß bin, werde ich eine nervige künstliche Intelligenz.
    
    1. Lieber eternius,

      ...oft sind es die kleinen Dinge im Leben...

      Herzlichen Dank! ich zweifelte schon sehr an meiner Wahrnehmung. ;-)

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

      1. ;)

        ...oft sind es die kleinen Dinge im Leben...

        Herzlichen Dank! ich zweifelte schon sehr an meiner Wahrnehmung. ;-)

        no problemo, oder wie auch immer der ausserirdische Affe da immer gesagt hat.

        gruss
        no strict;
        no warnings;

        Ich weiss es nicht, aber ich bin mir nicht sicher.
        Craptastic.
        Wenn ich groß bin, werde ich eine nervige künstliche Intelligenz.

  2. [code lang=javascript]
    alle_uls = document.getElementsByTagName("ul");
    for(i = 0; i <= alle_uls.length; i++)

    Nur um das zu konkretisieren.

    length ist die Länge des Arrays, da alle Arrays bei null anfangen hat das letzte Element den Index length - 1 und nicht length. Deshalb kannst du das Gleichheitszeichen weglassen.

    Struppi.

  3. echo $begrüßung;

    if(alle_uls[i].className == "meine-Klasse") tue_was();

    Hier hast du auch noch einen Fehler drin. Im class-Attribut und damit auch in className können durch white space separiert mehrere Klassen angegeben sein.

    echo "$verabschiedung $name";