Document.getElemetById() has no properties

Résolu
sebaaas Messages postés 4 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 16 décembre 2007 - 20 mai 2007 à 11:31
sebaaas Messages postés 4 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 16 décembre 2007 - 16 déc. 2007 à 22:15
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

sebaaas Messages postés 4 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 16 décembre 2007
24 mai 2007 à 18:36
3
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
21 mai 2007 à 00:04
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.
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2007 à 09:38
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 />
0
sebaaas Messages postés 4 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 16 décembre 2007
21 mai 2007 à 22:15
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
0

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

Posez votre question
sebaaas Messages postés 4 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 16 décembre 2007
16 déc. 2007 à 22:15
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
0