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 :

Erreur*: document.getElementById("mavariable") has no properties


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut Erreur*: document.getElementById("mavariable") has no properties
    Bonjour;

    J'ai modifier un script bien connu
    images defilante avec effet (sous IE ) (edj)

    Mais j'ai rajouté les texte deffilants associés aux images

    Je vous met le script (il est pas trop long)
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <SCRIPT LANGUAGE="JavaScript">
    PortImg = new Array;
    SiClickGoTo = new Array;
    PortLink = new Array;
    PortTxtLink = new Array;
    PortTxt = new Array;
    if (document.images)
    	{
    <?php
    connexion();
    $repertoire='images/portfolio/';
    $i=0;
    $sql = "select * from bd_portfolio order by port_id desc LIMIT 3" ;
    $query = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     while ($data = mysql_fetch_array($query)) { 
     
    	echo "i".$i." = new Image;\n";
    	echo "i".$i.".src = '".$repertoire.$data['port_img']."';\n";
    	echo "SiClickGoTo[".$i."] = \"portfolio.php\"\n";
    	echo "PortImg[".$i."] = i".$i.".src;\n";
    	echo "PortLink[".$i."] = '".$data['port_link']."'\n";
    	echo "PortTxtLink[".$i."] = '".$data['port_txt_link']."'\n";
    	echo "PortTxt[".$i."] = '".str_replace("\r", " ", str_replace("\n", "", str_replace("<br />", "", $data['port_txt'])))."'\n";
    	$i++;
        }
    	 deconnexion();
    	?>
     
    	}
     
    a = 0;
    //----------------- 1ere miniature
    function ejs_img_fx(img)
    	{
    	if(img && img.filters && img.filters[0])
    		{
    		img.filters[0].apply();
    		img.filters[0].play();
    		}
    	}
     
    function StartAnim()
    	{
    	if (document.images)
    		{
    document.write('<a href="#" onClick="ImgDest();return(false)"><img src="<? echo $repertoire.$data['port_img']; ?>" NAME=defil style="filter:progid:DXImageTransform.Microsoft.Pixelate(MaxSquare=100,Duration=1);BORDER: #c0c0c0 1px solid;"></a><a href="PortLink"><p id="PortTxtLink"></a></p><p id="PortTxt"></p>');    
    defilimg()
    		}
    	else
    		{
    		document.write('<src="<? echo $repertoire.$data['port_img']; ?>" BORDER=0>')
    		}
    	}
    function ImgDest()
    	{
    	document.location.href = SiClickGoTo[a-1];
    	}
    function defilimg()
    	{
    	if (a == 2)
    		{
    		a = 0;
    		}
     
    	if (document.images)
    		{
    		ejs_img_fx(document.defil)
    		document.defil.src = PortImg[a];
     
    		document.getElementById('PortLink').innerHTML =PortLink[a]; 
    		document.getElementById('PortTxt_Link').innerHTML =PortTxtLink[a]; 
    		document.getElementById('PortTxt').innerHTML =PortTxt[a]; 
     
    		tempo3 = setTimeout("defilimg()",7000);
     
    		a++;
    		}
    	}
     
    	//----------------
     
    </script>
    Mais comme la vie n'est pas toujour bien faite
    j'ai un bleme
    la console javascript de FireFox me dit :
    Erreur*: document.getElementById("PortLink") has no properties

    j'avais deja fait cette modif sur un autre site et ça marchait
    Mais la je vois pas mon erreur ....
    Quand une réponse vous aide
    Et quand ça marche

  2. #2
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut
    je pense que l'on ne peux pas attribuer document.getElementById("PortLink") a un <a href>

    sinon je sais pas faire

    une idée ??
    Quand une réponse vous aide
    Et quand ça marche

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Soit tu as un souci d'instanciation, au moment ou tu fais l'appel à lobjet, il n'a pas encore été créé dans le flux de la page ...
    soit tu as un soucis de casse dasn l'id (ou d'orthographe)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Points : 139
    Points
    139
    Par défaut
    Pour que cela fonctionne, il faut que tu ais un élément html qui porte l'id "PortLink" (la casse est importante). Si ce n'est pas le cas, il ne trouvera rien en naviguant dans le DOM.

  5. #5
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut
    A ce que j'ai pu comprendre
    l'orthographe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write('<a href="PortLink">mon lien</A>');
    n'est pas possible

    il dois exister une autre solution
    mais j'aipas encore trouvé
    Quand une réponse vous aide
    Et quand ça marche

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    il faut non seulement que l'objet avec le bon id soit dasn le html mais il faut aussi qu'il soit instancié au moment ou tu va l'appeler dasn le script ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Points : 139
    Points
    139
    Par défaut
    Si tu ne souhaites vraiment pas mettre d'id à ta balise a, tu peux toujours la rechercher avec un getElementByTagName et tester le lien de cet ancre, mais ça devient tordu.

  8. #8
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut
    je crois qu'il est bien instancié au moment de l'appel dasn le script.

    mais le soucis c'est comment l'appeller dans mon html
    Quand une réponse vous aide
    Et quand ça marche

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Points : 139
    Points
    139
    Par défaut
    Peux-tu nous envoyer le code html généré (sans le code php), ça simplifiera la compréhension du problème javascript.

  10. #10
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut
    code generer en html
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     </style> <SCRIPT LANGUAGE="JavaScript">
    PortImg = new Array;
    SiClickGoTo = new Array;
    PortLink = new Array;
    PortTxtLink = new Array;
    PortTxt = new Array;
    if (document.images)
    	{
    i0 = new Image;
    i0.src = 'images/portfolio/ermax2007.gif';
    SiClickGoTo[0] = "portfolio.php"
    PortImg[0] = i0.src;
    PortLink[0] = 'index.php'
    PortTxtLink[0] = 'Ermax 2007 en cours ...'
    PortTxt[0] = 'Graphisme / Ergonomie / Programmation : T. GERIN Site bilingue dynamique et animé et PHP&MySQL, Intégrant un BackOffice et une boutique. Mise à jour automatique de la base par FTP via 4D&reg;.'
    i1 = new Image;
    i1.src = 'images/portfolio/grenier.gif';
    SiClickGoTo[1] = "portfolio.php"
    PortImg[1] = i1.src;
    PortLink[1] = 'http://www.legrenierdumarin.fr/'
    PortTxtLink[1] = 'le grenier du marin'
    PortTxt[1] = 'Graphisme / Ergonomie / Programmation : T. GERIN Site E-commerce de plus de 8000 références. Paiement sécusisé. Backoffice (ajout /suppression / modification articles)  Génération et suivi des factures.'
    i2 = new Image;
    i2.src = 'images/portfolio/aggiornamento.gif';
    SiClickGoTo[2] = "portfolio.php"
    PortImg[2] = i2.src;
    PortLink[2] = 'http://www.aggiornamento-psychanalyse.org/'
    PortTxtLink[2] = 'aggiornamento pour la psychanalyse'
    PortTxt[2] = 'Graphisme / Ergonomie / Programmation : T. GERIN Site de discussions psychanalitique, suite à la parution d un ouvrage. Intégrant un BackOffice pour la validation des sujets. PHP & MySQL'
     
    	}
     
    a = 0;
    //----------------- 1ere miniature
    function ejs_img_fx(img)
    	{
    	if(img && img.filters && img.filters[0])
    		{
    		img.filters[0].apply();
    		img.filters[0].play();
    		}
    	}
     
    function StartAnim()
    	{
    	if (document.images)
    		{
    document.write('<a href="#" onClick="ImgDest();return(false)"><img src="images/portfolio/" NAME=defil style="filter:progid:DXImageTransform.Microsoft.Pixelate(MaxSquare=100,Duration=1);BORDER: #c0c0c0 1px solid;"></a><a href="PortLink"><p id="PortTxtLink"></a></p><p id="PortTxt"></p>');    
    defilimg()
    		}
    	else
    		{
    		document.write('<src="images/portfolio/" BORDER=0>')
    		}
    	}
    function ImgDest()
    	{
    	document.location.href = SiClickGoTo[a-1];
    	}
    function defilimg()
    	{
    	if (a == 2)
    		{
    		a = 0;
    		}
     
    	if (document.images)
    		{
    		ejs_img_fx(document.defil)
    		document.defil.src = PortImg[a];
     
    		document.getElementById('PortLink').innerHTML =PortLink[a]; 
    		document.getElementById('PortTxtLink').innerHTML =PortTxtLink[a]; 
    		document.getElementById('PortTxt').innerHTML =PortTxt[a]; 
     
    		tempo3 = setTimeout("defilimg()",7000);
     
    		a++;
    		}
    	}
     
     
    </script>
    Quand une réponse vous aide
    Et quand ça marche

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    heu id n'est pas href !!!!!

    un id est un identifiant un href est un lien ...

    quel est le but de l'opération ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut
    le but de l'operation c'est a chaque image est associé
    un texte
    un lien
    une image

    et finalement c'est associer un lien à un texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write('<a href="PortLink"><p id="PortTxtLink"></a></p>');
    ça semble idiot comme finalité
    Quand une réponse vous aide
    Et quand ça marche

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    ben non pas idiot mais y'a pas d'element avec un id PortLink et ça oui c'est idiot ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut
    Y'aurai moyen pour que tu sois plus clair ....
    Quand une réponse vous aide
    Et quand ça marche

  15. #15
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write('<a href="PortLink"><p id="PortTxtLink"></a></p>');
    tu remplace ça par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write('<a href="PortLink" id="PortLink"><p id="PortTxtLink"></a></p>);
    Sinon au niveau du paragraphe, il y a un petit bug je pense
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p id="PortTxtLink"></a></p>
    devrait plutot ressembler à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p id="PortTxtLink"></p></a>

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div style="text-align:center;">
    <br/>
    <a href="page1.htm" id="link1">le lien 1</a>
    <br/><br/>
    <input type='button' onclick="document.getElementById('link1').href=(document.getElementById('link1').href.indexOf('1')>-1)?'page2.htm':'page1.htm';document.getElementById('link1').innerHTML=(document.getElementById('link1').href.indexOf('1')>-1)?'lien 1':'un autre lien';" value ="modifier"/><br/><br/>
    <input type="button" onclick="alert(document.getElementById('link1').href)" value="verifier" />
    </div>
    la balise <a> a pour id link1 et document.getElementById('link') focntionne très bien ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Points : 139
    Points
    139
    Par défaut
    Autre petit bug... Un élément de type block comme un paragraphe <p> ne peux pas être dans un élément inline comme une ancre <a>

  18. #18
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Mets un "span" a la place, par exemple
    Peut-être qu'un div est également interdit? Et s'il te faut vraiment un élément de type block, peut-être que span display='block' passera au validateur w3c (oui, ok : c'est une ruse pas très élégante, mais bon)

Discussions similaires

  1. Erreur : document.getElementById('image').src is NULL
    Par CKLOL dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/05/2009, 10h56
  2. Réponses: 2
    Dernier message: 07/01/2007, 12h22

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