Objet.style.top me retourne 0

Résolu
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 - 27 févr. 2008 à 19:25
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 1 mars 2008 à 10:15
Bonjour,
Je suis débutant en java (je galère pas mal même), et sur ce morceaux de code je n'arrive pas a comprendre pourquoi ma ariable posi est égale à 0.
PS: les lignes en commentaire c'est juste pour les neutraliser.

var Obj = document.getElementById('im');
var posi= parseInt(Obj.style.top);
//var posi= Obj.style.top;
document.write(posi);
//Obj.style.top = posi;
// Obj.style.top=180;

Merci pour votre aide

10 réponses

XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
28 févr. 2008 à 17:13
Il est tout à fait normal que tu ne puisse récuperer la valeur Top de ton élément si celle-ci n'a pas été renseignée ds son style auparavant.

Pour récuperer les positions X et Y de ton élément, utilise la fonction suivante :

function getCumulativeOffset(oObj){    var valTop 0, valLeft 0;
    var oReturn = {left: 0, top: 0};
    do{
        valTop += oObj.offsetTop  || 0;
        valLeft += oObj.offsetLeft || 0;
        oObj = oObj.offsetParent;
    }while (oObj);
    oReturn.left = valLeft;
    oReturn.top = valTop;
    return oReturn;
}

Pourquoi ne pas utiliser directement l'instruction offsetTop  ? Parceque dans certains cas (notament quand il y a une position relative ds le DOM), offsetTop va te renvoyer la position par rapport à son parent et par rapport au document.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 févr. 2008 à 10:16
Bonjour,

    si c'est du java, pas le bon forum.... ici c'est javascript, et ça n'a rien à voir !

    ce que tu nous donnes ressemble cependant à du javascript, alors

          si tu nous donnais la balise en question ? et quand / où ... fais-tu ce javascript ?

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
28 févr. 2008 à 11:56
Désolé pour ma faute de fraape, oui c'est du javascript.
A la base je veut faire bouger un menu flotant, qui serai suitué dans un div.
Mais pour mes test je le fait sur une image.

le html:

le scipt (qui se trouve dans un fichier séparé):
window.onscroll = function()
{
//document.getElementById('im').style.top = document.body.scrollTop;
var Obj = document.getElementById('im');

var posi=Obj.style.top;
//var posi= parseInt(Obj.style.top);

posi += document.body.scrollTop;
//posi += 180;

document.write(posi);
//Obj.style.top = posi;

// Obj.style.top=180;
//Obj.style.width=180;
}
(les lignes mises en commentaire c'est pour neutraliser leur code)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 févr. 2008 à 13:56
donc... c'est normal ( oui désolé, c'est agaçant ! )
le name existe pas l'ID
IE sait remplacer l'un par l'autre, pas FF.
    Bul         [mon Site]     [M'écrire]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
28 févr. 2008 à 14:57
C'est ce que j'ai pensé moi aussi, c'est pour ça qu'il ya cette ligne:
//Obj.style.width=180;

j'ai fait un test pour voir si déjà j'avais l'objet, et oui la taille de mon imagepasse bien a 180px.
pour résumer:

//Obj.style.width=180; -->marche
//document.getElementById('im').style.top = document.body.scrollTop; --> erreur
var posi=Obj.style.top; --> ne marche pas (renvoi 0 et f   et fait planté explorer, quand j'utilie document.write.. pour l'afficher).
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 févr. 2008 à 15:16
pourrais-tu simplement, nous mettre ce qui ne va pas ?
    pour ici, évite les // si tu n'utilises pas, par contre enlève les si c'est ce que tu veux faire.
mets nous le minimum, mais tout ce qui est néceesaire, tel que tu utilises,
    sinon on doit interpréter, modifier, ne pas faire la même chose que toi....
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
28 févr. 2008 à 17:15
Correction :

Parceque dans certains cas (notament quand il y a une position relative
ds le DOM), offsetTop va te renvoyer la position par rapport à son
parent et non par rapport au document.
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
29 févr. 2008 à 21:13
Voici ce qui plante

var Obj = document.getElementById('im');
var posi=Obj.style.top; // erreur ici posi = 0;

posi += 10;
Obj.style.top = posi;

XtremDuke> je n'arrive pas a comprendre la ligne (je débute totalement en javascript et la façon dont fonctionne ce language me semble un peu mystique)
 valTop += oObj.offsetTop  || 0;

valTop est égal à Obj.offsetTop ou 0???

Sinon j'ai du mal a voir où implanter cette fonction et quoi faire de l'objet retourné.
Merci pour votre aide
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mars 2008 à 10:13
id="im"
        height="90" width="90" alt="le titre" style="position : absolute;">
<script>
var Obj = document.getElementById('im');
var posi=Obj.style.top;
posi += 10;
Obj.style.top = posi;
</script>

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mars 2008 à 10:15
et pour ce qui est des positions : quelques explications
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
Rejoignez-nous