Avatar billede nomak Nybegynder
10. marts 2003 - 21:57 Der er 12 kommentarer og
1 løsning

innerHTML giver fejl (tror jeg)..

Har flg. script...

<SCRIPT>
    function doQuake(n) {
        if (self.moveBy) {
            Quake.style.visibility = '';
            for (i = n; i > 0; i--) {
                self.moveBy(0,i);
                self.moveBy(i,0);
                self.moveBy(0,-i);
                self.moveBy(-i,0);
            }
        }

        Quake.style.visibility = 'hidden';
    }

    function Quake(text) {
        Quake = document.getElementById("QUAKE");

        Quake.innerHTML = text;

        Quake.style.visibility = '';

        setTimeout("doQuake(160);",1);
    }

    setTimeout("Quake('QUAKE!!!!!');", 2500);
</SCRIPT>

<div onclick="Quake('QUAKE!!!!!');">QUAKE!!</div>
<div onclick="Quake('AFFE!!!!');">AFFE</div>
-------------------------------------------------
Problemet er bare at scriptet kun virker EN gang! så skal siden reloades hvis man vil bruge det igen..

Er totalt lost !?!?!?!? :(
Avatar billede nomak Nybegynder
10. marts 2003 - 22:09 #1
hov..glemte lige..
<div id="QUAKE" style="font-face: Verdana, Tahoma, Arial; font-size: 50px; position: absolute; font-weight: bolder; visibility: hidden; top: 40px; left: 50px;">
</div>
Avatar billede soelvpil Nybegynder
10. marts 2003 - 22:14 #2
Hvad sker der?

Hvilken linje melder den fejl i?
Avatar billede Slettet bruger
10. marts 2003 - 22:17 #3
I denne linje:

Quake = document.getElementById("QUAKE");

... overskriver du funktionen Quake, så den bliver til en variabel. Kald derfor variablen for varQuake e.l.
Avatar billede mortrr Praktikant
10. marts 2003 - 22:18 #4
<html><body>
<SCRIPT>
var QuakeTO;
    function doQuake(n) {
        if (self.moveBy) {
            dQuake.style.visibility = '';
            for (i = n; i > 0; i--) {
                self.moveBy(0,i);
                self.moveBy(i,0);
                self.moveBy(0,-i);
                self.moveBy(-i,0);
            }
   
        }
    if (n<=0) {
            clearTimeOut(QuakeTO);
    }
        dQuake.style.visibility = 'hidden';
    }

    function Quake(text) {
        dQuake = document.getElementById("QUAKE");

        dQuake.innerHTML = text;

        dQuake.style.visibility = '';

        QuakeTO=setTimeout("doQuake(160);",1);
    }

</SCRIPT>

<div onclick="Quake('QUAKE!!!!!');">QUAKE!!</div>
<div onclick="Quake('AFFE!!!!');">AFFE</div>
<div id="QUAKE" style="font-face: Verdana, Tahoma, Arial; font-size: 50px; position: absolute; font-weight: bolder; visibility: hidden; top: 40px; left: 50px;">
</div>
</body></html>
Avatar billede nomak Nybegynder
10. marts 2003 - 22:19 #5
Object doesn't support this pooperty or method..

linie 31!

linie 31 = <div onclick="Quake('AFFE!!!!');">AFFE</div>
Avatar billede Slettet bruger
10. marts 2003 - 22:21 #6
Derudover er denne linje mærkelig:

setTimeout("doQuake(160);",1);

Bør nok bare være:

doQuake(160);

Og så skriver du:

Quake.style.visibility = '';

... to gange. Det er overflødigt.
Sidst med ikke mindst kan funktionen doQuake ikke tilgå den Quake variabel, som du har sat i funktionen Quake, da den er lokal (grunden til, det virker, er, at IE går med til en sløset programmering).
Alt i alt ville jeg omskrive det til dette:

<script>
function quake(txt, n) {
  document.getElementById("QUAKE").innerHTML = txt;
  document.getElementById("QUAKE").style.visibility = "visible";
  if (self.moveBy) {
    for (i = n; i > 0; i--) {
      self.moveBy(0,i);
      self.moveBy(i,0);
      self.moveBy(0,-i);
      self.moveBy(-i,0);
    }
  }
  document.getElementById("QUAKE").style.visibility = "hidden";
}
</script>

Så bliver det nemt og overskueligt.
Avatar billede nomak Nybegynder
10. marts 2003 - 22:38 #7
der er dog stadig et problem med din løsning phoenixv;
Texten bliver aldrig synlig ved dit eksempel..
Avatar billede Slettet bruger
10. marts 2003 - 22:50 #8
Det har du ret i. Det skyldes en fejl i browserens afviklingsrækkefølge.
Men før jeg gør i kast med at "lappe hullerne", så bør du nok overveje, om du i virkeligheden ønsker denne effekt. Jeg lover dig i hvert fald, at hvis jeg nogensinde kommer ind på sådan en side her, så besøger jeg den aldrig igen! :)
Avatar billede Slettet bruger
10. marts 2003 - 22:50 #9
Jeg er tilbage igen i morgen.
Avatar billede nomak Nybegynder
10. marts 2003 - 22:57 #10
rolig nu, det er ikke til en side :)
Avatar billede mortrr Praktikant
10. marts 2003 - 23:02 #11
Mit eksempel virker altså fint. (også selv om jeg fik sat en cleartimeout ind, da jeg endnu engang fik forvekslet timeout og intervel.

<html><body>
<SCRIPT>
var QuakeTO;
    function doQuake(n) {
        if (self.moveBy) {
            dQuake.style.visibility = '';
            for (i = n; i > 0; i--) {
                self.moveBy(0,i);
                self.moveBy(i,0);
                self.moveBy(0,-i);
                self.moveBy(-i,0);
            }
   
        }
        dQuake.style.visibility = 'hidden';
    }

    function Quake(text) {
        dQuake = document.getElementById("QUAKE");

        dQuake.innerHTML = text;

        dQuake.style.visibility = '';

        QuakeTO=setTimeout("doQuake(160);",1);
    }

</SCRIPT>

<div onclick="Quake('QUAKE!!!!!');">QUAKE!!</div>
<div onclick="Quake('AFFE!!!!');">AFFE</div>
<div id="QUAKE" style="font-face: Verdana, Tahoma, Arial; font-size: 50px; position: absolute; font-weight: bolder; visibility: hidden; top: 40px; left: 50px;">
</div>
</body></html>
Avatar billede nomak Nybegynder
12. marts 2003 - 22:30 #12
mortrr - læg et svar? :P
Avatar billede mortrr Praktikant
12. marts 2003 - 22:55 #13
OK - og tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester