Rolf b: JS kann Styleangeben nicht lesen? *teilw. gelöst

Beitrag lesen

  • Meine ID lautet #p1, da sollte man meinen:
  • var navobj = window.getComputedStyle(#p1).display;
  • oder:
  • var navobj = window.getComputedStyle('p1').display;
  • oder noch besser:
  • var navobj = window.getComputedStyle('#p1').display;

NEIN. Die ID des <p> Elements lautet nicht #p1. Sie lautet p1. Das # verwendest Du nur in CSS-Selektoren, um ein Symbol als ID zu kennzeichnen.

Dass der Browser für Elemente mit ID eine globale Variable mit gleichem Namen anlegt, ist in HTML 4 non-standard gewesen. Aber im IE war es üblich, andere Browser sind nachgezogen, und in HTML 5 versuchte man, es zum Standard zu erheben, mit kontroversen Reaktionen. In älteren Postings auf StackOverflow habe ich Hinweise gesehen, dass die WhatWG diese Absicht hatte, finde aber im aktuellen Standard-Text von WhatWG auf die Schnelle keinen Hinweis mehr darauf.

Definitiv standardkonform sind diese beiden Techniken:

 document.getElementById('p1')  - seit ewigen Zeiten
 document.querySelector('#p1')  - seit Chrome 1, FF 3.5, IE8, Opera 10, Safari 3.2

Bei querySelector schreibst Du das # hin, weil dort ein CSS Selektor erwartet wird und nicht nur eine nackige ID.

Den Rückgabewert von einer dieser beiden Funktionen kannst Du in einer Variablen - z.B. p1 - speichern oder direkt an window.getComputedStyle() übergeben.

Rolf