style von td's in funktionen ändern
heri
- javascript
Hallo,
schlicht gesagt ich hab einen Haufen td's, die onMouseover="this.style.backgroundColor=#666666" sollen.
Ich will aber ned bei jeder alles ausschreiben, sondern der einfachheit halber onMouseover="mselect(td-id-name)" machen, nur weiss ich nicht wie ich dann aus der Funktion heraus das objekt 'this' dann ansprechen muss.
Habe es mit
function mselect(notthis)
{
notthis.style.backgroundcolor='#666666';
}
versucht, allerdings tut sich da nix.
Grüße
heri
Hi,
schlicht gesagt ich hab einen Haufen td's, die onMouseover="this.style.backgroundColor=#666666" sollen.
warum verwendest Du nicht die Pseudoklasse :hover dafür?
Ich will aber ned bei jeder alles ausschreiben, sondern der einfachheit halber onMouseover="mselect(td-id-name)" machen,
Was enthalten die Variablen td, id und name, und warum übergibst Du nicht einfach 'this'?
nur weiss ich nicht wie ich dann aus der Funktion heraus das objekt 'this' dann ansprechen muss.
Indem Du es übergibst.
Habe es mit
[...]
versucht,
Das ist rein willkürlich.
notthis.style.backgroundcolor='#666666';
Auch vom 'notthis' abgesehen entspricht dies nicht dem ursprünglichen Code.
Cheatah
td-id-name is eine variable und zwar übergeb ich damit immer die id der jeweiligen td.
also zb:
<td id="bla" onMouseover="mselect(bla)">
funzt hover denn auch bei nicht a's? trotzdem würdm ich interessieren wie ichs aus der funktion heraus ändern kann.
Hi,
td-id-name is eine variable und zwar übergeb ich damit immer die id der jeweiligen td.
mit welchem Wert (und wann) hast Du die Variable initialisiert? Warum gehst Du den Umweg über so etwas, obwohl Du direkten Zugriff auf das gefragte Objekt hast?
funzt hover denn auch bei nicht a's?
Nein. Es _funktioniert_ aber auch bei Nicht-_Links_. Zumindest bei Browsern, die seit der Definition von CSS/2.0 im Mai 1998 signifikant weiter entwickelt wurden.
trotzdem würdm ich interessieren wie ichs aus der funktion heraus ändern kann.
Indem Du das entsprechende Objekt übergibst. Umwege sind nicht nötig; das Objekt liegt im Moment der Übergabe direkt vor.
Cheatah
urpsrünglich wollt ich's ja so machen:
aufruf irgendwo mittels:
<td onMouseover="mselect()">
die funktion sah so aus:
function mselect()
{ this.style.backgroundColor="#666666";}
---
was passiert?
der browser raunzt mich an: this.style NULL oder kein objekt.
----
ok, dann denk ich mir halt, übergebe ich ihm das objekt:
aufruf:
<td id="BLA" onMouseover="mselect(BLA)">
funktion:
function mselect(notthis)
{ notthis.style.backgroundColor="#666666"; }
---
ergebnis: browser raunzt nicht mehr, aber tut auch nichts wenn ich mit dem cursor über die td geh.
hi,
<td onMouseover="mselect()">
die funktion sah so aus:
function mselect()
{ this.style.backgroundColor="#666666";}
was passiert?
der browser raunzt mich an: this.style NULL oder kein objekt.
natürlich, this bezieht sich jetzt auf die funktion selber - und die hat ziemlich wenig stil, ähm style.
ok, dann denk ich mir halt, übergebe ich ihm das objekt:
aufruf:
<td id="BLA" onMouseover="mselect(BLA)">
es existiert kein javascript-objekt BLA, nur weil du ein element mit einer ID "BLA" ausgezeichnet hast.
funktion:
function mselect(notthis)
{ notthis.style.backgroundColor="#666666"; }ergebnis: browser raunzt nicht mehr, aber tut auch nichts wenn ich mit dem cursor über die td geh.
warum übergibst du denn nicht einfach this?
das ist ein javascript-objekt, welches existiert.
onMouseover="deineFunktion(this);"
-> an _dieser_ stelle bezieht sich this auf das element, in dem dieser eventhandler notiert ist.
deineFunktion(objekt) {
objekt.irgendwas = "jodel";
}
gruß,
wahsaga
danke nochmals wahsaga,
ich hab eh schon versucht einfach nur this zu übergeben, aber leider hat sich da genausowenig getan :(
<td onMouseover="mselect(this)" onMouseOut="munselect(this)">
function mselect(notthis)
{
notthis.style.backgroundcolor='#666666';
}
ergebnis:
hintergrundfarbe ändert sich nicht :(
Hallo heri.
function mselect(notthis)
{
notthis.style.backgroundcolor='#666666';
}ergebnis:
hintergrundfarbe ändert sich nicht :(
Nunja. Beachte die Regel, die bei der Übersetzung von CSS-Eigenschaften zu JS-Objekten zu beachten ist.
Einen schönen Montag noch.
Gruß, Ashura
danke, ja das wars :)
der thread kann begraben werden
notthis.style.backgroundcolor='#666666';
ergebnis:
hintergrundfarbe ändert sich nicht :(
heri,
Das liegt am kleinen Zeh. :-)
Aber warum zwei Funktionen, die dasselbe tun? Du kannst die Farbe auch als Parameter übergeben:
function bg(obj, color) {
obj.style.backgroundColor = color;
}
Aufruf mit <td onmouseover="bg(this, '#666')" onmouseout="bg(this, 'white')">
Live long and prosper,
Gunnar
ROFL
ich habs schon
backgroundColor C, C, C nicht c.
wah, ich hass html, oder zumindest das syntaxhighlighting von dreamweaver.
danke euch aber :)
Hallo heri.
wah, ich hass html, oder zumindest das syntaxhighlighting von dreamweaver.
Dein Problem hatte nichts mit HTML zu tun. Und was hat das Syntaxhighlighting des DW hiermit zu tun?
Einen schönen Montag noch.
Gruß, Ashura
viel, weil dreamweaver oft nicht highlighted. eben zb this.style.backgroundcolor und this.style.backgroundColor haben die gleiche farben. er könnte zum. letzteres backgroundColor in anderer farbe darstellen, um gleich erkennen zu können ob die syntax auch stimmt.
das würde einiges an nervenaufreibung sparen :)
Hallo heri.
viel, weil dreamweaver oft nicht highlighted. eben zb this.style.backgroundcolor und this.style.backgroundColor haben die gleiche farben. er könnte zum. letzteres backgroundColor in anderer farbe darstellen, um gleich erkennen zu können ob die syntax auch stimmt.
das würde einiges an nervenaufreibung sparen :)
Tja, die Denkarbeit kann dir ein Programm nicht abnehmen.
Ich zitiere mich einmal selbst:
Anwendungen können dir helfen, können musst du es selbst.
Einen schönen Montag noch.
Gruß, Ashura
an und für sich hast du da schon recht, nur leider ist WISSEN nicht gleich denken.
es ist kaum denkarbeit nötig, um regeln zu WISSEN (wie diese css-sonderregelung).
aber dies kann man halt nicht durch wissen begreifen, sondern eben nur durch denken ;)
dir auch einen schönen tag noch
heri
hi,
td-id-name is eine variable
nein. das ist kein gültiger name für eine variable in JS.
und zwar übergeb ich damit immer die id der jeweiligen td.
<td id="bla" onMouseover="mselect(bla)">
hier übergibst du nicht die id, sondern eine variable namens bla.
selbst wenn du 'bla' übergeben hättest, müsstest du dir immer noch erst mal die referenz auf das element mit der ID bla besorgen - deshalb ist this in diesem falle der einfachere weg.
aber warum liest du nicht erst mal in selfhtml nach, wie das mit diesem this funktioniert?
gruß,
wahsaga
danke wahsage,
es steht aber leider nur dort wie man einer funktion einen bestimmten wert einer form überliefert(this.form.Feld.value). ich will aber die id einer td überliefern.
ich will doch nur die syntax für mein vorhaben wissen, mehr nicht.
grüße heri
Hi,
ich will doch nur die syntax für mein vorhaben wissen, mehr nicht.
Hmm, grübel, this.id vielleicht?
Gruß, Cybaer
hi,
ich will doch nur die syntax für mein vorhaben wissen, mehr nicht.
Hmm, grübel, this.id vielleicht?
technisch korrekt - aber in der praxis unnötig.
this.id übergeben, um sich dann per getElementById wiederum eine referenz auf das element zu beschaffen?
die liefert this ja auch gleich.
(ich weiß, dass _du_ das auch weißt ...)
gruß,
wahsaga
Hi,
(ich weiß, dass _du_ das auch weißt ...)
Aber wer doof fragt ... O;->
Gruß, Cybaer
Hi,
(ich weiß, dass _du_ das auch weißt ...)
Aber wer doof fragt ... O;->
Gruß, Cybaer
tja ich pflege zu sagen: es gibt keine dummen fragen, es gibt nur dumme antworten ;)
wobei deine antwort keineswegs dumm war, sondern genau was ich wissen wollte.
dank :)
Hi,
tja ich pflege zu sagen: es gibt keine dummen fragen, es gibt nur dumme antworten ;)
Hier in *diesem* Forum? Kann nicht sein! Nicht hier! Nie! O;->
Gruß, Cybaer