JavaScript Problem mit Opera und .firstChild

M

Mr. Snoot

Gast
edit: Problem gelöst. Aus optischen Gründen hatte ich die Liste die zurückgegeben wird mit Zeilenumbrüchen \n und Tabstopps \t eingerückt. Dadurch hat Opera das falsche Element angesprochen. Jetzt weiß ich auch, warum es früher mal funktioniert hat und seit ich eigentlich nichts geändert hatte, in Opera nicht mehr. Tja, Tabstopps und Zeilenumbrüche sind eben doch etwas und nicht nichts.

Allerdings sollten Whitespaces u.ä. automatisch entfernt werden, dazu gabs eine Funktion im JS:

PHP:
  function clearSpaces (strOut)
  {
    strOut = strOut.replace(/li>\s+/gm,'li>');
    strOut = strOut.replace(/\s+<li/gm,'<li');
    strOut = strOut.replace(/li>\s+<li/gm,'li><li');
    return strOut;
  };

Naja egal, es läuft :D



Hio,

ich versuche schon seit geraumer Zeit mein Autocomplete-Script in Opera korrekt zum Laufen zu bekommen.

Dort frage ich Pfeiltasten ab, um bei Pfeil nach unten/oben das nächste/vorherige Element einer Liste (<ul><li>...</li></ul>) auszuwählen. In Opera muss man aber immer zweimal drücken, damit das nächste/vorherige Element gewählt wird.


Evtl. steckt der Fehler bei .firstChild, da heißt's im Code:
PHP:
      case 40: // runter
      if(curElement)
      {
        ... 
      }
      else // wenn noch nichts mit der Tastatur ausgewählt wurde
      {
        curElement = naviElement.firstChild;
        document.getElementById(txt_id).value = curElement.firstChild.id;
        curElement.style.backgroundColor = '#6990b6';
        curElement.style.color = '#FFFFFF';
      }

Lasse ich mir alert(naviElement.firstChild); ausgeben, liefert mir das in Opera [object Text] - in allen anderen Browsern [object HTMLLIElement].

Was bedeutet hier object Text? Greift Opera da auf etwas anderes zu als die anderen Browser? Möglicherweise auf den Text innerhalb der li-Tags und nicht auf die Listenelemente selbst? Oder lieg ich falsch und Opera bezeichnet HTMLLIElement einfach als Text?


alert(naviElement.firstChild.value); liefert mir zudem in Opera undefined in anderen Browsern aber 0.

Wie bringe ich Opera dazu auf HTMLLIElement zuzugreifen?

Getestet hab ich das bisher mit Opa 9 und 10.
 
Zuletzt bearbeitet:

Ähnliche Themen

Antworten
4
Aufrufe
1.749
Kausalat
K
M
Antworten
0
Aufrufe
1.284
Mr. Snoot
M
M
Antworten
6
Aufrufe
1.166
Mr. Snoot
M
Zurück
Oben