1UnitedPower: hoffe das ist besser Verständlich

Beitrag lesen

Hakuna matata!

function( e ) {

  
Es ergibt wenig Sinn die Funktion als Event-Handler zu registrieren, weil dann der Rückgabewert einfach verloren ginge. Es besteht auch kein Grund die Funktion so zu schreiben, dass sie nur mit Event-Objekten arbeitet, sie könnte viel allgemeiner für HTMLElemente geschrieben werden, dadurch wäre sie häufiger wiederverwendbar.  
  

>   var e = e || window.event;  
> [/code]  
  
Das kann man sich in modernen Browsern sparen.  
  

> ~~~javascript
  

>   var target = e.target || e.srcElement;  
> 

Das auch.

var p = target.parentElement;
  var c = p.children;

  
Variablen sollten ausssagekräftige Bezeichner haben, 50 Zeilen später im Quelltext, weiß niemand man mehr wofür e, c und p eigentlich stehen.  
  

> ~~~javascript
  

>   for ( var i = 0; i < c.length; i++ ) {  
>   
>     var btn = c[ i ];  
>   
>     if ( btn === target ) {  
>   
>       return i;  
>   
>       break;  
>   
>     }  
>   
>   }  
>   
> }

JavaScript hat eine eingebaute indexOf()-Methode für Arrays, die genau das macht, was du hier mühsam mit der Schleife nachbastelst. Eine NodeList ist leider kein Array, weshalb man einen kleinen Trick anwenden muss, um indexOf() trotzdem verwenden zu können.

Der gesamte Code vereinfacht:

function getElementsIndex ( element ) {  
  
  var siblings = element.parent.children;  
  
  return [].indexOf.call( siblings, element );  
  
}
--
“All right, then, I'll go to hell.” – Huck Finn
0 47

jQuery Child-Stelle ermitteln bei click

Rainerme
  • java
  1. 0

    Element ermitteln bei Ereignis

    Mattes
    • javascript
    1. 0

      hoffe das ist besser Verständlich

      Rainerme
      1. 0
        Matthias Apsel
        1. 0

          ohweia ich und Beschreiben

          Rainerme
          1. 0
            Matthias Apsel
            1. 0
              Rainerme
              1. 0
                Gunnar Bittersmann
                1. 0
                  Reinerme
                  1. 0
                    mark
                    1. 0
                      Rainerme
                      1. 0
                        Matthias Apsel
                        1. 0
                          Rainerme
                          1. 0
                            Gunnar Bittersmann
                      2. 0
                        Roadster
                        1. 0
                          Gunnar Bittersmann
                          1. 0
                            Roadster
                            1. 0
                              Camping_RIDER
                              1. 0
                                Roadster
                      3. 0
                        mark
                        1. 0

                          unfassbar, es geht, aber warum?

                          Rainerme
                          1. 0
                            mark
                            1. 0
                              Matthias Apsel
                              1. 0
                                mark
                  2. 0
                    Matthias Apsel
                    1. 0
                      Rainerme
                      1. 0
                        Roadster
                      2. 0
                        Matthias Apsel
                  3. 0
                    Gunnar Bittersmann
      2. 0
        Roadster
        1. 0
          Rainerme
          1. 0
            Roadster
            1. 0
              Roadster
            2. 0
              Roadster
            3. 0
              Rainerme
              1. 0
                Gunnar Bittersmann
              2. 0
                Roadster
              3. 0
                Roadster
        2. 0
          1UnitedPower
          1. 0
            Roadster
          2. 0
            Roadster
            1. 0
              1UnitedPower
      3. 0
        mark
        1. 0
          Rainerme
          1. 0
            mark
        2. 0
          1UnitedPower
  2. 0
    mark