document.getElementById('test').style.onfocus
paul
- javascript
Moin,
bestimmt eine Kleinigkeit für die Profis:
ich möchte per JS herausfinden ob ein bestimmtes Element den focus hat.
document.getElementById('test').style.onfocus
funktioniert nicht.
Hi,
bestimmt eine Kleinigkeit für die Profis:
nein, da es nicht den Zustand des Fokushabens gibt, sondern nur das Ereignis des Fokuserhaltens oder -verlierens, wobei vor allem letzteres häufiger passiert, als einem lieb ist.
document.getElementById('test').style.onfocus
funktioniert nicht.
Natürlich nicht, denn Du versuchst hier eine CSS-Eigenschaft namens "onfocus" in irgend einer Form zu verwenden, die es nicht gibt. Ohne die style-Collection hättest Du den Event-Handler, dem Du eine Funktion zuweisen kannst.
Cheatah
Also ich hab das jetzt so gemacht:
<... onfocus="javascript:test='focus'" onblur="javascript:test=''" ...>
if (test == "focus") ...
So läuft's und mir reicht's :-)
Mahlzeit Paul,
<... onfocus="javascript:test='focus'" onblur="javascript:test=''" ...>
if (test == "focus") ...
1. Das Pseudoprotokoll "javascript:" ist irreführend und falsch - lass es weg.
2. Globale Variablen sind Mist ... was passiert, wenn Du mehrere Element hast, die Du überwachen willst, ob sie den Focus haben oder nicht?
MfG,
EKKi
- Das Pseudoprotokoll "javascript:" ist irreführend und falsch - lass es weg.
Ok, funzt auch ohne, danke.
- Globale Variablen sind Mist ... was passiert, wenn Du mehrere Element hast, die Du überwachen willst, ob sie den Focus haben oder nicht?
Was sonst?
Wenn's mehrere werden einfach mehrere globale Variablen definieren.
Hallo,
- Das Pseudoprotokoll "javascript:" ist irreführend und falsch - lass es weg.
Ok, funzt auch ohne, danke.
natürlich. Mach dir bitte klar, was ein frei gewählter Bezeichner mit einem nachfolgenden Doppelpunkt vor einer Javascript-Anweisung bedeutet. Dann wird dir klar, dass dies in diesem Kontext unsinnig ist.
- Globale Variablen sind Mist ... was passiert, wenn Du mehrere Element hast, die Du überwachen willst, ob sie den Focus haben oder nicht?
Was sonst?
Lege das Flag nicht als globale Variable an, sondern als Eigeschaft des Objekts, dem es von der Logik her zugeordnet ist.
Wenn's mehrere werden einfach mehrere globale Variablen definieren.
Das wäre ganz schlechter Stil und führt zu schwer wartbarem Code.
So long,
Martin
Lege das Flag nicht als globale Variable an, sondern als Eigeschaft des Objekts, dem es von der Logik her zugeordnet ist.
so?
<... onfocus="this.focus=true" onblur="this.focus=false" ...>
if (document.getElementById('tiefe').focus == true)
Auch so läuft's. Das ist aber etwas doppeltgemoppelt oder? Wenn man onfocus ist muss man den focus von Hand auf true setzen um ihn später abzufragen?
Mahlzeit Paul,
<... onfocus="this.focus=true" onblur="this.focus=false" ...>
Ja.
if (document.getElementById('tiefe').focus == true)
Nein:
if (document.getElementById('tiefe').focus) {
// foo
}
Auch so läuft's. Das ist aber etwas doppeltgemoppelt oder? Wenn man onfocus ist muss man den focus von Hand auf true setzen um ihn später abzufragen?
Das ist in keinster Weise doppel gemoppelt - weil Javascript von Haus aus nämlich eine derartige Eigenschaft nicht kennt und sie daher auch nicht beim Focus-bekommen oder -verlieren setzen kann. Also kommst Du nicht umhin, das "manuell" zu machen.
So vermeidest Du haufenweise überflüssige globale Variablen und weißt bei jedem zu überwachenden Objekt immer sofort, ob es den Fokus hat.
MfG,
EKKi
Vielen Dank Euch allen!
Hi,
so?
<... onfocus="this.focus=true" onblur="this.focus=false" ...>
Nein - zumindest unguenstig, da einige Elemente (Links, Formularelemente, ...) eine Methode namens focus besitzen, die du dir mit diesem Namen fuer die selbstdefinierte Eigenschaft ueberschreiben wuerdest - und dann waer'se futsch, wenn du sie doch noch mal brauchen solltest.
Also lieber einen "eigenen" Namen waehlen, der nicht mit bestehenden (oder zukuenftig denkbaren) Eigenschafts-/Methodennamen kollidiert.
Bspw. mit einem Grossbuchstaben oder Unterstrich zu beginnen, oder ein eigenes Praefix zu nutzen, boete sich an.
MfG ChrisB
die kannst dem ereignis eine funktion zuweisen
function deine_funktion() {
alert("Focus erhalten!");
}
document.getElementyById("test").onfocus = deine_funktion;
die kannst dem ereignis eine funktion zuweisen
function deine_funktion() {
alert("Focus erhalten!");
}
document.getElementyById("test").onfocus = deine_funktion;
das ganze unterscheidet sich aber nur von der variante, die ich übersehen habe, wenn du die funktion als memberfunktion einer klasse definierst.
die klasse kann dann die attribute enthalten die sowieso schon vorhanden sind und das, was du hinzugefügt hast (focushabenden) ...