Chris: [object HTMLliElement] ie streikt

Beitrag lesen

Lieber Felix.
Danke nochmals, dass du dich so intensiv mit meinem Problem auseinandersetzt.

Was mich insgesamt verunsichert, ist die Tatsache, warum Du <li>-Elemente aus einer <ul> entfernst, um dann diese Elemente wieder einzufügen. Wäre es nicht sinnvoller, mittels einer per JavaScript zugewiesenen Klasse diese <li>-Elemente einfach zu "behandeln"? Damit kannst Du ausgewählten <li>-Elementen eine bestimmte Klasse zuweisen, während die restlichen eine andere Klasse erhalten.

Hmm dieser Gedanke macht mir Angst, da der Ansatz viel einfacher ist :D und meine komplizierte Lösung vielleicht einfach ersetzen könnte...

Da ich ja zu beginn eh alle LI's lade, könnte ich einfach mit display:none; die nicht benötigten verstecken. *hmmm* ich werde der Sache mal nachgehen.

Dann schulde ich euch wohl noch meine ArrayList :) sorry war wohl etwas verwirrend.

function ArrayList() {
  this.arr = new Array();
  this.add = function(myObj){
    this.arr[this.arr.length] = myObj;
  }
  this.length = function (){
    return this.arr.length;
  }
  this.get = function (myIndex){
    return this.arr[myIndex];
  }
  this.set = function (myObj, myIndex){
    this.arr[myIndex] = myObj;
  }
}

Ich versuche einmal deine Funktion zu verstehen:

var getListNodes = document.getElementById('serveritemCarrier');
/* Warum nennen wir das gemeinte HTML-Elementobjekt hier nicht auch "ulContainer", so wie später? Das hilft, Deinen Code zu verstehen... */

wäre devintiv sprechender...

/* Warum nicht so?
var listNodes = document.getElementById("serveritemCarrier").getElementsByTagName("li");
Da kann man jetzt auch durch die gefundenen <li>-Elemente durchiterieren. Das ist auch für einen "Außenstehenden" schneller begreifbar. */

hmm ja das getElementsByTagName. Ich weiss auch nicht warum ich das nie verwende. Ist eigentlich hier klar die beste Lösung

if(getListNodes.childNodes[i].id) {
/* Aha, die Teile müssen eine passende ID haben? Gibt es darinnen denn auch <li>-Elemente, die ausscheiden? */

richtig erkannt. die LI haben eine ID und wie slide_1 etc... weil wenn ich ja nach links und rechts klicke in meiner "slideshow" müssen andere Elemente dargestellt werden. übrigens mache ich einen endless loop, sprich wenn man nach rechts klickt und das letzte Element erscheint, kommt automatisch wieder das erste Element. Also eine art Karussell.

getListNodes.removeChild(getListNodes.childNodes[i]);
/* Warum entfernst Du hier das <li>-Element, wenn Du doch später mit innerHTML eh alles platt machst? Das ist in meinen Augen unnötig. */

Das stimmt, es ist aber säuberer die DOM Struktur durch Node-Operationen zu verändern, anstatt innerHTML zu verwenden.

displayListS(actFirstNodeS);
/* Woher kommt diese Funktion? Und was ist "actFirstNodeS"? */
}[/code]

Die erste Funktion war um die ArrayList zu initieren und ihr die Objekte zuzuweisen. Die zweite Funktion displayListS() managed das Darstellen der Elemente. actFirstNodeS ist eine globale Variable, die die erste ID des darzustellenden Objekts beinhaltet.

Klar der technische Ansatz ist hier zu hinterfragen, in FireFox funktioniert es tadellos, leider im IE eben nicht. Und IE ist mir wichtiger :/ Darum muss ich wohl das Ganze nochmals überdenken.