IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

mon getElementById ne marche pas


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Par défaut mon getElementById ne marche pas
    Bonjour,

    pourriez me mettre sur la bonne voie, j'essaie de positionner un élément avec getElementById après un calcul que je symbolise ici par une fonction bidon. Mais comment faire rentrer le résultat dans la coordonnée ? Qu'est-ce qui me manque dans le code ?

    Merci beaucoup pour votre aide !!

    Tomas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    <html>
    <head>
    <title>Vyroba</title>
    <style type="text/css"> 
    #image	{position: absolute; top:150px; background-color: yellow; width: 200px; height:200px; }
    </style>
     
    <script>
    function calculX() { 
    a = 100;
    return a; 
    }
    </script>
     
    </head>
     
    <body>
     
    <script>
    a = calculX();
    document.getElementById("image").style.left = a;
    </script>
     
    <div id="image"></div>
     
    </body>
    </html>

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Bonjour,

    Peut-etre que le nom de ton div ne conviens pas : image est peut etre un mot réservé. Tu devrais le renommer , par exemple div-img , et ressayer

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Par défaut
    J'ai tout simplifié, mon div s'appel l'autrement dans "la réalité". Donc le problème ne viendrait pas d'ici...

  4. #4
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    hello

    ton div n'est créé qu'après l'appel du script !
    déplace ton script après le code html du div et ça marchera

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 27
    Par défaut
    Si si, ça marche !!! Et dire que je me casse la tête depuis deux jours...

    Mais il y a un autre problème qui apparait du coup...
    Je veux lancer le calcul de ses coordonnées régulieurement et j'ai rajouté donc une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function allezgo() {
    document.write("");
    a = calculX();
    b = calculY();
    document.getElementById("image").style.left = a;
    document.getElementById("image").style.top = b;
    }
    si donc je met après mon div
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script>
    allezgo();
    </script>
    ça marche toujours très bien - en manuel. En raffraichissant la page, ça recalcul et replace l'élément.

    MAIS ! si j'ajoute à la place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script>
    setInterval("allezgo()",1000);
    </script>
    tout les éléments html disparaissent au bout d'une seconde - et de toute façon même pedant la second que l'élément était affiché, il n'a pas pris en compte le coordonnées fournis par le calcule. Pourtant le recalcule marche, je fais afficher les résultats. Mais - ça se passe ensuite sur une page blanche. Et c'est vraiment seulement le setInterval qui a tout fait disparaître...

    Vous saurriez que faire pour que setInterval("allezgo()",1000); ne fasse pas tout disparaitre ???

    Merci énormément d'avance, je ne suis pas un confirmé en JavaScript... !!!

  6. #6
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    un truc comme ça je suppose ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <html>
    <head>
    <title>Vyroba</title>
    <style type="text/css"> 
    #image	{position: absolute; top:150px; background-color: yellow; width: 200px; height:200px; }
    </style>
     
    <script>
    	function getPos(o)
    {
    	try
    	{
    		var x = y = 0;
    		if (o.offsetParent)
    		{
    			x = o.offsetLeft;
    			y = o.offsetTop;
    			while (o = o.offsetParent)
    			{
    				x += o.offsetLeft;
    				y += o.offsetTop;
    			}
    		}
    		return [x,y];
    	}
    	catch(ex){ window.status = 'function getPos exception : ' + ex.name + ' - ' + ex.message; return [-1,-1];}
    }
     
    function allezgo(){
    	var a = getPos(document.getElementById("image"))[0] + 10;
    	var b = getPos(document.getElementById("image"))[1] + 10;
    	document.getElementById("image").style.left = a; 
    	document.getElementById("image").style.top = b;
    	setTimeout("allezgo()",500);
    }
    </script>
     
    </head>
     
    <body>
     
     
     
    <div id="image"></div>
     
    <script>
    allezgo();
    </script>
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mon select ne marche pas.
    Par Aurèl90 dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 01/12/2005, 15h59
  2. [CSS] Une partie de mon CSS ne marche pas sous IE
    Par YanK dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 28/10/2005, 17h58
  3. mon select count(*) marche pas
    Par zorba49 dans le forum Langage SQL
    Réponses: 14
    Dernier message: 05/08/2005, 08h28
  4. Tcsh - Mon script ne marche pas
    Par Aramis dans le forum Linux
    Réponses: 5
    Dernier message: 13/05/2004, 18h26
  5. [IB71] mon Blob ne marche pas correctement
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 2
    Dernier message: 17/09/2003, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo