Document.getElemetById() has no properties

[Résolu]
Signaler
Messages postés
4
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2007
-
Messages postés
4
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2007
-
Bonjour à vous tous,

Tout d'abord je tiens à m'excuser car je suis débutant mais j'essaye de comprendre tout doucement.

J'ai donc copié un scripte, et j'ai essayer de l'adapter à mes besoins.

Voici mon script de ma page index1.php
<html><head></head>

<script type= "text/javascript">
function xxx(newtext) {
document.getElementById('destinataire').value = newtext;
}
function writediv(texte)
     {
     document.getElementById('nompbox').innerHTML = texte;
     }

function verifPseudo(nomp)
     {
     if(nomp != '')
               {
               if(nomp.length<3)
                         writediv(' '+nomp+' :  ce pseudo est trop court');
               else if(nomp.length>30)
                         writediv(''+nomp+' : ce pseudo est trop long');
               else
                      writediv(file('ajax.php?destinataire ='+escape(nomp)))
               }

     }

function file(fichier)
     {
     if(window.XMLHttpRequest) // FIREFOX
          xhr_object =  new XMLHttpRequest();
     else if(window.ActiveXObject) // IE
          xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
     else
          return(false);
     xhr_object.open("GET", fichier, false);
     xhr_object.send(null);
     if(xhr_object.readyState == 4) return(xhr_object.responseText);
     else return(false);
     }
</script>

 Mots dans la Base de données : "Pomme" , "Poire", "Ananas" , "Prune", "Pommes" (le serveur de lycos étant un peu lent des fois, il faut insister)

Même s'il indique que l'acces est interdit, taper qq lettre de plus 
 

<form method="get" action="bd.php">
Produit testé = 

</form>
</html>


Voici le code du document ajax.php
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>

</head>

<?php
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
mysql_select_db('tados0000_db',$connect) or die ("erreur de connexion base");   
$sql = "SELECT nomp FROM tour WHERE nomp LIKE '%".$_GET['destinataire']."%'";
$result = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
$i = 0;
$nomp = "";
echo '';
while ($row = mysql_fetch_array($result))
    {
    $i++;
    if($nomp == $row['nomp']){
           } else {

           echo '<li>[# '.$row['nomp'].']</li>';
           $nomp = $row['nomp'];
           }
    }
if($i==0) echo '<li>Il n\'y a pas aucun membre pseudo</li>';
echo '';
mysql_close();
?>

</html> 


Et voici la page de ce code
http://membres.lycos.fr/tados0000/index1.php
Il faut parfois insiter car il peut arriver que lycos mette une erreur 404 (mais ma page existe bien)

J'ai voulu améliorer (avec beaucoup d'aide) en mettant un 2eme champs
Voici le code
<html><head></head>

<script type="text/javascript">

    function xxx(id, newtext) {
document.getElementById('destinataire'+id).value = newtext;
}

function writediv(id, texte)
     {
     document.getElementById('nompbox'+id).innerHTML = texte;
     }
     
  
function verifPseudo(id, nomp)
     {
     if(nomp != '')
               {
               if(nomp.length<3)
                         writediv(id, ' '+nomp+' :  ce pseudo est trop court');
               else if(nomp.length>30)
                         writediv(id, ''+nomp+' : ce pseudo est trop long');
               else
                      writediv(id, file('ajax.php?destinataire ='+escape(nomp)))
               }

     }

function file(fichier)
     {
     if(window.XMLHttpRequest) // FIREFOX
          xhr_object = new XMLHttpRequest();
     else if(window.ActiveXObject) // IE
          xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
     else
          return(false);
     xhr_object.open("GET", fichier, false);
     xhr_object.send(null);
     if(xhr_object.readyState == 4) return(xhr_object.responseText);
     else return(false);
     }
</script>

 Mots dans la Base de données : "Pomme" , "Poire", "Ananas" , "Prune", "Pommes" (le serveur de lycos étant un peu lent des fois, il faut insister)

Même s'il indique que l'acces est interdit, taper qq lettre de plus 
 

<form method="get" action="bd.php">
Produit testé Produit testé 

</form>
</html>


Voici le lien http://membres.lycos.fr/tados0000/index4.php

Malheureusement, la console d'erreur m'indique que :
"document.getElemetById("destinataire"+id) has no properties"
Qu'est ce que je dois changer dans mon code pour ne plus avoir cette erreur

5 réponses

Messages postés
4
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2007

Messages postés
385
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
21 août 2015
5
salut
document.getElementById

<hr size="2" width="100%" />Au début, on essaye de trouver une solution qui marche, et puis on cherche la meilleure solution.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

    ...onkeyup="verifPseudo(this.value)
       donc appel à chaque appuie sur une touche ?
       et dès qu'on a frappé 3 caractères :
         
file('ajax.php?destinataire='+escape(nomp)
       et c'est quoi ajax.php ?  on n'a pas.

            
    de plus, le retour de xmlhttprequest, n'est pas sûr...

    il faudrait tester :

           xhr_object.onreadystatechange = function()
           {
               
if(xhr_object.readyState == 4)...


            }

<hr />


Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
4
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2007

Merci pour vos réponses,

Voici en ligne un exemple qui marche (pour un seul champs)
http://membres.lycos.fr/tados0000/index1.php

(il faut parfois institer pour accéder à la page car le serveur lycos est n peu rebelle)

Fichier ajax.php se trouve dans mon 1er message.

Mon problème se trouve dans la console d'erreur pour cette page la
http://membres.lycos.fr/tados0000/index4.php

J'avais un début de solution mais le résultat du 2eme champs se mettait dans le 1er champs cfr http://membres.lycos.fr/tados0000/index3.php

Voila
Messages postés
4
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
16 décembre 2007

Voila, j'ai fini par mettre en ligne mon site. Il s'agit de www.testmat.net un site regroupant des comparatifs de matériel . Si vous voulez voir ou j'ai utilisé la technologie Ajax, c'est dansla proposition de test pour les marques et produits. N'hésitez pas  me donner votre avis sur la mise en place.

Merci