- 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