HighDots Forums  

JS Geschwindigkeit und Timer in Objekten

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


Discuss JS Geschwindigkeit und Timer in Objekten in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #11  
Old   
Guenter Baier
 
Posts: n/a

Default Re: JS Geschwindigkeit und Timer in Objekten - 10-07-2009 , 02:46 PM






On 7 Okt., 02:37, Thomas 'PointedEars' Lahn <PointedE... (AT) web (DOT) de>
wrote:
Quote:
und wird nun mit

o["div_ID_" + i] = new ImgObject(i);

noch einmal ein Objekt?

Jein. *Mit dieser Zuweisung ist/wird "div_id_" + i der Name einer
Eigenschaft dieses ersten, benutzerdefinierten Objekts (hier mit `o'
referenziert).
So, ich habe an einem Teil des Codes gearbeitet - Thomas, Dein Code
zur
Erstellung des XHTTP Objektes habe ich ganz entfernt, ich hoffe, dass
ist
so in Deinem Sinne.

Ich frage dann aber hier an der Stelle noch einmal nach:

var o = new Array();

num = 21;
for(i=1;i<num+1;i++)
{
if(i < 10) { i = "0"+i; }
o["div_ID_"+i] = new ImgObject(i);
o["div_ID_"+i].showCurrentFile();
}


Soweit habe ich es geändert und ging davon aus, dass
ich o["div_ID_"+i] nun ab diesem Zeitpunkt an immer ansprechen kann
und auf die Methoden / Eigenschaften es Objekes zugreifen kann.

function showNext()
{
var length = parseInt(num);
i = 1 + num*(Math.random());
i = Math.round(a);
if(i < 10) { i = "0" + i; }

o["div_ID_"+i].showNextFile();
showRand();
}

function timer(functionName,value,timerDelay)
{
clearTimeout();
if(timerDelay == "") { timerDelay = 100; }
return setTimeout(functionName+"('"+value+"');",timerDela y);
}

function showRand()
{
clearTimeout();
if(slideRunning == true)
{
timerID = timer("showNext","",1000);
}
}


gestartet wird das Bilder-Wechseln mit einem showRand(), von da auf
showNext und wieder zurück.
Wichtig bei showNext ist mir hier, dass im ImgObject für das jeweilige
Bild der Zähler mitzählt, bei welchem
Bild ich gerade bin.

Das funktioniert solange richtig, bis bei showNext eine ID zum zweiten
Mal genutzt werden soll.
Ab da kann ich nicht mehr auf o["div_ID_"+i] zugreifen und bekomme ein
"undefined"

Woran liegt es, dass beim zweiten Mal auf das beim Seitenstart mit
o["div_ID_"+i] = new ImgObject() erzeugte Objekt nicht mehr
zugegriffen werden kann.

Habe übrigens auch den zweiten Timer entfernen können - brauchte ich
in der Form dann vorerst nicht
mehr - und keine Angst ;-) am wandeln der BG-Bilder in <img> bin ich
auch schon dran.

Danke nochmal für Hilfe.


Günter

Reply With Quote
  #12  
Old   
Guenter Baier
 
Posts: n/a

Default Re: JS Geschwindigkeit und Timer in Objekten - 10-07-2009 , 02:49 PM






On 7 Okt., 02:37, Thomas 'PointedEars' Lahn <PointedE... (AT) web (DOT) de>
wrote:

Quote:
Lies doch einfach die gängigen Referenzen: ECMAScript-Spezifikation (dort
steht, wie es funktionieren sollte und meist auch funktioniert), MDC
(JavaScript und Gecko-DOM), MSDN (JScript und MSHTML-DOM), und diverse
andere Browserhersteller-Sites (Opera, Apple Developer Connection für
Safari/WebKit u.a.)
Ah, gibts da Deiner Meinung nach auch etwas in Buchform, was
empfehlenswert sein kann?

Danke

Günter

Reply With Quote
  #13  
Old   
Guenter Baier
 
Posts: n/a

Default Re: JS Geschwindigkeit und Timer in Objekten - 10-08-2009 , 03:15 AM



Ah, die Schleife läuft jetzt wie geplant - mit Klickunterbrechung -
und auch mit eigentständiger
Wiederaufnahme der Schleife.

Baue jetzt noch die BG-Bilder in <img> ein und dann lade ich es
nochmal hoch

Wenn dann jemand noch was findet, würde ich nochmals um Kritik bitten.

Danke

Günter

Reply With Quote
  #14  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: JS Geschwindigkeit und Timer in Objekten - 10-14-2009 , 03:02 PM



[Zitat repariert]

Guenter Baier wrote:

Quote:
Thomas 'PointedEars' Lahn wrote:
und wird nun mit

o["div_ID_" + i] = new ImgObject(i);

noch einmal ein Objekt?

Jein. Mit dieser Zuweisung ist/wird "div_id_" + i der Name einer
Eigenschaft dieses ersten, benutzerdefinierten Objekts (hier mit `o'
referenziert).

So, ich habe an einem Teil des Codes gearbeitet - Thomas, Dein Code
zur Erstellung des XHTTP Objektes habe ich ganz entfernt, ich hoffe,
dass ist so in Deinem Sinne.
Siehe E-Mail. Und guck Dir bitte mal Dein(e) Posting(s) im Original an.
Google Groups eignet sich nicht zum Posten (es sei denn, man weiss genau,
worauf man sich einlässt). Nimm stattdessen z.B. Thunderbird/Icedove oder
KNode.

Quote:
Ich frage dann aber hier an der Stelle noch einmal nach:

var o = new Array();
Bist Du sicher, dass Du Array-Eigenschaften brauchst? Wenn nein, reicht

var o = {};

(siehe auch <http://PointedEars.de/es-matrix#features>)

Quote:
num = 21;
Ist `num' deklariert?

Quote:
for(i=1;i<num+1;i++)
Ist `i' deklariert?

Quote:
{
if(i < 10) { i = "0"+i; }
`i' ist der Name Deiner Schleifenvariable, sie hier einen Number-Wert
speichert. Du willst sie wirklich nicht innerhalb der Schleife mit einem
String-Wert überschreiben.

var img =
Quote:
o["div_ID_"+i] = new ImgObject(i);
o["div_ID_"+i].showCurrentFile();
img.showCurrentFile();

ist etwas effizienter und wartungsfreundlicher.

Quote:
}


Soweit habe ich es geändert und ging davon aus, dass
ich o["div_ID_"+i] nun ab diesem Zeitpunkt an immer ansprechen kann
und auf die Methoden / Eigenschaften es Objekes zugreifen kann.
Sofern `"div_ID_" + i' zum Zeitpunkt des Zugriffs eine entsprechende
Eigenschaft des mit `o' referenzierten Objekts bezeichnet.

Quote:
function showNext()
{
var length = parseInt(num);
i = 1 + num*(Math.random());
Ist `i' deklariert?

Quote:
i = Math.round(a);
Hier überschreibst Du den in der vorherigen Zeile zugewiesenen Wert von `i'.
Was soll das? Und was ist eigentlich `a'?

Quote:
if(i < 10) { i = "0" + i; }
Kann man *hier* machen. Einfacher wäre es natürlich, auf das Präfix `0'
überall zu verzichten bzw. tatsächlich ein Array bestimmungsgemäss (d.h. mit
Eigenschaften mit *numerischem* Namen) zu verwenden.

Quote:
o["div_ID_"+i].showNextFile();
Wäre vermutlich sinnvoller, "div_ID_" in einer global verfügbaren
Eigenschaft zu speichern, wenn man nicht nur ein Array nehmen will.

Quote:
showRand();
Objektorientierte Programmierung sieht irnkwie anders aus.

Quote:
}

function timer(functionName,value,timerDelay)
{
clearTimeout();
window.clearTimeout(...);

Und was genau willst Du eigentlich clearen (Argument fe lt)?

Quote:
if(timerDelay == "") { timerDelay = 100; }
Hier besser:

if (!timerDelay) timerDelay = 100;

Damit kannst Du sowohl `""', `0' als auch `undefined' (entweder explizit
angegeben, oder Argument nicht übergeben) und andere Falschwerte
berücksichtigen. (Details siehe Spezifikation.)

(Das Weglassen der geschweiften Klammern und von Zeilenumbrüchen bei
einfachen if-Anweisungen wie z.B. denen für Defaultwerte ist
Geschmackssache. Ich lese und schreibe sowas lieber wie einen Satz, der bei
`if' anfängt und bei `;' endet; klappt natürlich nur, wenn dieser "Satz" auf
eine Zeile Ã* 80 Zeichen passt. Debuggen lässt es sich IMHO inzwischen
genauso gut wie der Mehrzeiler.)

Quote:
return setTimeout(functionName+"('"+value+"');",timerDela y);
return window.setTimeout(...);

Quote:
}

function showRand()
{
clearTimeout();
window.clearTimeout(...);

Quote:
if(slideRunning == true)
Typkonvertierende Vergleiche mit `true' oder `false' sind ineffizient.
Entweder

if (slideRunning)

oder (nicht typkonvertierend)

if (slideRunning === true)

Quote:
{
timerID = timer("showNext","",1000);
Ist `timerID' deklariert?

Quote:
}
}

[...]
Das funktioniert solange richtig, bis bei showNext eine ID zum zweiten
Mal genutzt werden soll.
Ab da kann ich nicht mehr auf o["div_ID_"+i] zugreifen und bekomme ein
"undefined"

Woran liegt es, dass beim zweiten Mal auf das beim Seitenstart mit
o["div_ID_"+i] = new ImgObject() erzeugte Objekt nicht mehr
zugegriffen werden kann.
Es liegt daran, dass Dein Quelltext keinen Sinn ergibt. Bitte benutz
endlich die genannten Referenzen statt einfach planlos drauflos zu
programmieren, und verwende bei Problemen zuerst einen Debugger (z.B.
Firebug).


PointedEars

Reply With Quote
  #15  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: JS Geschwindigkeit und Timer in Objekten - 10-14-2009 , 03:06 PM



Guenter Baier wrote:

Quote:
Thomas 'PointedEars' Lahn wrote:
Lies doch einfach die gängigen Referenzen: ECMAScript-Spezifikation (dort
steht, wie es funktionieren sollte und meist auch funktioniert), MDC
(JavaScript und Gecko-DOM), MSDN (JScript und MSHTML-DOM), und diverse
andere Browserhersteller-Sites (Opera, Apple Developer Connection für
Safari/WebKit u.a.)

Ah, gibts da Deiner Meinung nach auch etwas in Buchform, was
empfehlenswert sein kann?
Die gebundene Ausgabe der entsprechenden Spezifikationen Was sonst so
auf dem Buchmarkt ist, vermag mich nicht zu überzeugen, denn es ist entweder
veraltet, irreführend bis falshc, für Anfänger nicht geeignet, oder mehrere
oder alles davon.


PointedEars

Reply With Quote
  #16  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: JS Geschwindigkeit und Timer in Objekten - 10-14-2009 , 03:07 PM



Guenter Baier wrote:

Quote:
[...]
Baue jetzt noch die BG-Bilder in <img> ein und dann lade ich es
nochmal hoch

Wenn dann jemand noch was findet, würde ich nochmals um Kritik bitten.
Gib dann einfach Bescheid und poste zur Sicherheit den URL nochmal.


PointedEars

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 - 2009, Jelsoft Enterprises Ltd.