[Javascript][FF] divs verplaatsen werkt niet

Pagina: 1
Acties:

  • GambitRS
  • Registratie: Juni 2001
  • Laatst online: 13-06-2013
Na urenlang zoeken op zowel google als GoT en zelfs na het lezen van een hele hoop javascripts kom ik nog steeds niet uit het volgende probleem.

Ik heb een pagina met div's. Nu kan ik met mijn javascript functie move() de div's verplaatsen. Dit werkt perfect in IE en Opera, maar in FireFox gebeurt er dus helemaal niks. Misschien dat iemand anders inziet waarom er niets gebeurt in firefox?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script>
  
var moving = false;
function move(){
    if (moving == false) {
        document.getElementById('left').style.pixelLeft = -160
        document.getElementById('right').style.pixelRight = -160
        moving = true
    }
    
    if (document.getElementById('left').style.pixelLeft<20)
        document.getElementById('left').style.pixelLeft+=6
    if (document.getElementById('right').style.pixelRight<20)
        document.getElementById('right').style.pixelRight+=6
    setTimeout("move()",50)
}
</script>


het probleem is niet dat FF het element niet kan vinden. Ik kan namelijk wel gewoon de marges en andere dingen van de divs aanpassen, maar pixelLeft/pixelRight lijkt niet te werken. Wat doe ik verkeerd?

MechWarrior || Monsters Game


  • GambitRS
  • Registratie: Juni 2001
  • Laatst online: 13-06-2013
Ik heb mijn script aangepast om geen pixelLeft/Right meer te gebruiken, nu werkt het wel goed in alle browsers, maar het is weer eens behelpen.

Ik heb het nu veranderd in:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script>
  
var moving = false;
function move(){
    if (moving == false) {
        document.getElementById('left').style.left = "-160px";
        document.getElementById('right').style.right = "-160px";
        moving = true
    }
    var left = parseInt(document.getElementById('left').style.left);
    var right = parseInt(document.getElementById('right').style.right);
    
    if (left<20) {
        left+=6;
        document.getElementById('left').style.left = left + "px";
    }
    if (right<20) {
        right+=6;
        document.getElementById('right').style.right = right + "px";
    }
    setTimeout("move()",50)
}
</script>


misschien dat iemand anders iets van deze fout leert voordat hij hem zelf maakt.

MechWarrior || Monsters Game


  • HyperioN
  • Registratie: April 2003
  • Laatst online: 25-04 09:11
Toch vreemd dat je eerst vertelt urenlang gezocht te hebben, maar nadat je gepost hebt de oplossing in 10 minuten vind...

  • ironx
  • Registratie: Augustus 2001
  • Laatst online: 08-05 21:49
HyperioN. schreef op maandag 21 februari 2005 @ 18:55:
Toch vreemd dat je eerst vertelt urenlang gezocht te hebben, maar nadat je gepost hebt de oplossing in 10 minuten vind...
Kan toch zijn dat je ineens een "ingeving" krijgt? Heb ik ook wel eens ;)


This posting is provided "AS IS" with no warranties, and confers no rights.


  • GambitRS
  • Registratie: Juni 2001
  • Laatst online: 13-06-2013
inderdaad, best raar eigenlijk, maar het schoot me ineens te binnen dat de functie wel eens niet zou kunnen bestaan in firefox en toen ik me besefte dat je in CSS gewoon left/right gebruikt heb ik dat maar geprobeerd. Gelukkig werkt dat in alle browsers.

MechWarrior || Monsters Game


  • André
  • Registratie: Maart 2002
  • Laatst online: 11-05 16:42

André

Analytics dude

Je gebruikt een variabele left, een id left en style.left, een beetje verwarrend niet? En het kan ook nog fout gaan zelfs, ik zou ze de eerste 2 een andere naam geven.

  • GambitRS
  • Registratie: Juni 2001
  • Laatst online: 13-06-2013
Fout gaan? alleen als je zelf niet meer weet wat je doet, javascript zal ze heus niet door elkaar gaan gebruiken.

MechWarrior || Monsters Game


  • André
  • Registratie: Maart 2002
  • Laatst online: 11-05 16:42

André

Analytics dude

Oh nee? Dacht het wel. Kijk maar eens naar dit voorbeeld:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
  <head>
    <title>Test</title>
    <script type="text/javascript">
      function doe()
      {
        alert(test.innerHTML);
      }
    </script>
 </head>
  <body onload="doe()">

    <div id="test">Blaat</div>

  </body>
</html>

Het script zal Blaat alerten, maar wat als ik nu een variabele test heb? Dan zal hij toch undefined geven omdat die variabele geen property innerHTML heeft. En met left wordt het nog verwarrender dan met test, dus een goede raad: gebruik diverse namen, ook om het voor jezelf in grotere scripts overzichtelijk te houden.
Pagina: 1