HighDots Forums  

Flip Flop

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Flip Flop in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Timo Krumme
 
Posts: n/a

Default Flip Flop - 11-13-2003 , 04:25 PM






Hallo NG,

ich habe im Prinzip ein ganz triviales Problem,

ich möchte eine Funktion programmieren, die mir solange wie sie ausgeführt
wird 2 ihr übergebene Werte jeweils nach einer ebenfalls übergebenen Zeit
tauscht.
Hintergrund ist der, das ich eine Tabellenspalte solange wie der Cursor auf
ihr ruht zum blinken bringen will.

Ich halte das an sich für nicht allzu schwer, leider komme ich mit der
Programmierung nicht so ganz weiter. Javascript ist eben doch ein wenig
anders, wenn man auf PHP fixiert ist.

Bin für jede Hilfe dankbar.

Gruß Timo



Reply With Quote
  #2  
Old   
Dietmar Meier
 
Posts: n/a

Default Re: Flip Flop - 11-13-2003 , 05:42 PM






Timo Krumme <cartoon.hero (AT) gmx (DOT) de> typed:

Quote:
ich möchte eine Funktion programmieren, die mir solange wie sie
ausgeführt wird 2 ihr übergebene Werte jeweils nach einer ebenfalls
übergebenen Zeit tauscht.
Hintergrund ist der, das ich eine Tabellenspalte solange wie der
Cursor auf ihr ruht zum blinken bringen will.
Dafür verwendest Du sinnvollerweise setInterval(). Quickhack für
MSIE 5+ und Mozilla/NN6+:

<style type="text/css">
.baus { background-color: lightyellow }
.bein { background-color: orange }
</style>
...
<script type="text/javascript">
function blinken(el, zs) {
if (zs && !el.btimer) {
var le = el; // [1]
el.btimer = setInterval(function() {
le.className = le.className == "baus" ?
"bein" : "baus"; // [2]
}, 333);
}
else if (!zs && el.btimer) {
clearInterval(el.btimer);
el.btimer = undefined;
el.className = "baus";
}
}
</script>
...
<td
onmouseover="blinken(this, 1)"
onmouseout="blinken(this, 0)"
class="baus"
Quote:
[1] Groupsgoogle in dieser Gruppe nach "closure", um diese
Anweisung zu verstehen.
[2] Hier wird getauscht, siehe in einer Referenz Deines
geringsten Misstrauens nach dem Operator "? ... :".

ciao, dhgm



Reply With Quote
  #3  
Old   
Daniel Kirsch
 
Posts: n/a

Default Re: Flip Flop - 11-14-2003 , 03:54 AM



Dietmar Meier wrote:
Quote:
function blinken(el, zs) {
if (zs && !el.btimer) {
var le = el; // [1]
el.btimer = setInterval(function() {
le.className = le.className == "baus" ?
"bein" : "baus"; // [2]
}, 333);
Die Zuweisung le=el kann man sich hier IMHO sparen. el ist innerhalb der
Funktion in setInterval ebenfalls definiert. Notwendig wäre die
Zuweisung beispielsweise, wenn man das aktuelle Objekt ansprechen möchte
und hierfür "this" verwendet. le=this

Grüße
Daniel



Reply With Quote
  #4  
Old   
Dietmar Meier
 
Posts: n/a

Default Re: Flip Flop - 11-14-2003 , 06:42 AM



Daniel Kirsch wrote:

Quote:
var le = el; // [1]
el.btimer = setInterval(function() {
le.className = le.className == "baus" ?
"bein" : "baus"; // [2]
}, 333);

Die Zuweisung le=el kann man sich hier IMHO sparen. el ist
innerhalb der Funktion in setInterval ebenfalls definiert.
Aua, ja, da hast Du recht. Ich hatte im Hinterkopf, dass das
ohne diese Zuweisung nur in Mozilla funktioniere, wo Argumente
und lokale Variablen Eigenschaften des Funktionsobjektes sind.

Offenbar spielt das für Closuren aber keinerlei Rolle. Danke:
so spare ich mir fortan einige Zeilen Codes.

ciao, dhgm



Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.