You are not logged in.

wcf.regNote.message

bauser

Intermediate

  • "bauser" started this thread

Posts: 384

Occupation: Senior Software Engineer

  • Send private message

1

Monday, September 13th 2004, 11:09am

größe von objekten ändern

hallo zusammen!

ich möchte gerne dass sich die größe eines objektes auf mausklick ändert, aber nicht von 0 auf 100 in einem sprung sondern halt mit nem übergang.

also hab ich mal fogendes geschrieben:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<script type="text/javascript">
  function growIt(id, w, h, s){
    ele = this.document.getElementById(id);
    iActW = ele.style.width;
    iActH = ele.style.height;
    iActH = parseInt(iActH.substr(0, iActH.length-2));
    iActW = parseInt(iActW.substr(0, iActW.length-2));
    if (iActW+s < w) iActW = iActW + s;
    else iActW = w;
    if (iActH+s < h) iActH = iActH+s;
    else iActH = h;
    ele.style.width = iActW+'px';
    ele.style.height = iActH+'px';
  }

  function growBox(id, w, h, s){
    wid = parseInt(this.document.getElementById(id).style.width.substr(0,this.document.getElementById(id).style.width.length))
;
    while( wid < w){
      alert ("WID: "+wid+" W: "+w);
      window.setTimeout("growIt('"+id+"', "+w+", "+h+", "+s+")", 10);
      wid = parseInt(this.document.getElementById(id).style.width.substr(0,this.document.getElementById(id).style.width.length
-2));
    }
  }
</script>


im mozilla klappt es, im internetexplorer nicht. nehm ich das alert aus der while schleife klappt es auch im mozilla nicht mehr. die art und weise ist unkritisierbar, ich will erst mal überhaupt was hinkriegen bevor ich das schön mach. also bitte keine kommentare wie "willste nich lieber anzahl der schritte statt schrittweite nehmen". danke.


http://bauser.dyndns.org/test.php -- ohne alert
http://bauser.dyndns.org/test2.php -- mit alert
I'm Tony Menthanar! You fuck wit me, you fuckin' wit da best!

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

2

Monday, September 13th 2004, 1:00pm

Ich würde mal sagen du hast des -2 beim ersten parseint Aufruf,
in der growbox Funktion vergessen.

PHP Source code

1
2
function growBox(idwhs){
    wid parseInt(this.document.getElementById(id).style.width.substr(0,this.document.getElementById(id).style.width.length));


also eigentlich ja so:

PHP Source code

1
2
function growBox(idwhs){
    wid parseInt(this.document.getElementById(id).style.width.substr(0,this.document.getElementById(id).style.width.length  -  2  ));


Aber sicher ob des dein Fehler ist kann ich nicht sagen ... du bist ja leider
nicht online oder der dyndns Eintrag stimmt nicht mehr, insofern kann
ich jetzt leider die links auch nicht ausprobieren :( ...

kannst ja mal die test.php als Datei hier reinhengen ... hab ja nen eigenen
PHP Web Server zu Hause stehen, dann kann ich des da auch ma angucken :)

Ciao Ephraim

bauser

Intermediate

  • "bauser" started this thread

Posts: 384

Occupation: Senior Software Engineer

  • Send private message

3

Monday, September 13th 2004, 1:11pm

nö ich bin einfach blöd.

http://bauser.dyndns.org/growing/test.php
http://bauser.dyndns.org/growing/test2.php

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  function growIt(id, w, h, s){
    ele = this.document.getElementById(id);
    iActW = ele.style.width;
    iActH = ele.style.height;
    iActH = parseInt(iActH.substr(0, iActH.length-2));
    iActW = parseInt(iActW.substr(0, iActW.length-2));
    if (iActW+s < w) iActW = iActW + s;
    else iActW = w;
    if (iActH+s < h) iActH = iActH+s;
    else iActH = h;
    ele.style.width = iActW+'px';
    ele.style.height = iActH+'px';
  }

  function growBox(id, w, h, s){
    ele = this.document.getElementById(id);
    wid = parseInt(ele.style.width.substr(0,ele.style.width.length-2));
    while( wid < w){
      alert ("WID: "+wid+" W: "+w);
      window.setTimeout("growIt('"+id+"', "+w+", "+h+", "+s+")", 10);
      wid = parseInt(ele.style.width.substr(0,ele.style.width.length-2));
    }
  }


so, klappt auch nich
I'm Tony Menthanar! You fuck wit me, you fuckin' wit da best!

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

4

Monday, September 13th 2004, 2:40pm

Hey,

ich hab jetzt ma zwei Änderungen gemacht dann funtzt's bei mir :)

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
    function growBox(idwhs){
        ele document.getElementById(id);
        wid parseInt(ele.style.width.substr(0,ele.style.width.length-2));
        0;
        while(wid w){
            += 500;
            window.setTimeout("growIt('"+id+"', "+w+", "+h+", "+s+")"i);
            if (wid+wwid wid s;
            else wid w;
        }
    }


Erstmal die Weite solltest du nicht über das Style dir wieder holen,
da des ja erst später wenn der Timeout abgelaufen ist neu gesetzt wird.
Dadurch haust du ansonsten zig Timeout aufrufe raus ...
Zweitens hab ich jetzt für die verscheidenen Timeouts nen Counter eingeführt der immer pro While schleife um 500 hundertstel erhöht wird.
Da die While schleife fast keine Zeit braucht werden alle aufruf bei gleichem
Timeout fast gleichzeitig aufgerufen, dadurch das jetzt aber jeder weiter Timeout 500 Hunderstel später kommt geht des super schön :)....

Du des Basic da drin ist nur so Spasses halber drin oder was ;):)

Getestet hab ich mit Opera 7.5 und IE 6.0.

Ciao Ephraim

bauser

Intermediate

  • "bauser" started this thread

Posts: 384

Occupation: Senior Software Engineer

  • Send private message

5

Monday, September 13th 2004, 2:55pm

naja das ganze design der textbox sieht ja schon mehr so c64 style mäßig aus, da dachte ich mri ich nehm als standard text halt son basic quatsch, sieht doch super aus. so hab ich mal angefangen :)

das mit dem setTimeout hab ich glaub ich nich so ganz verstanden. ich dachte der wartet mit der ausführung die angegebene zeit, also auch mit der ausführung der while schleife.

zum abschluss noch mal n danke schön für deine, wie immer, schnelle und gute hilfe ;)
I'm Tony Menthanar! You fuck wit me, you fuckin' wit da best!

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

6

Monday, September 13th 2004, 3:19pm

:) kein Prob ;)

Ne setTimeout wird ausgeführt und returned sofort wieder.
Da wird bloss sozusagen ein neuer Javascript Thread aufgemacht
der dann für sich wartet bis die Zeit abgelaufen ist und ruft dann
die angegebene Funktion auf.

Ich muss dazu sagen Javascript macht mir einfach Spass und
deshalb bin ich da sehr interessiert an Problemen die es
zu lösen gilt ;)

Ciao Ephraim

wcf.user.socialbookmarks.titel