Code js qui ne marche pas (DOM, ajout d'évènement)

Résolu
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 5 avril 2008 à 11:07
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 6 avril 2008 à 14:09
Salut tout le monde,

J'ai ces quelques lignes de code qui ne marchent pas !!!

document.getElementById('button1').addEventListener('click', reciproque('document.form1.texte1.value', 'document.form1.texte2.value', 'document.form1.texte3.value'), false);
document.getElementById('button2').addEventListener('click', hypotenuse('document.form2.texte1.value', 'document.form2.texte2.value'), false);
document.getElementById('button3').addEventListener('click', cote3('document.form3.texte1.value', 'document.form3.texte2.value'), false);

et je ne sais pas comment faire pour mettre ce que retourne mes fonction dans des balises

avec innerHTML ni ou mettre mes innerHTML !!!

merci d'avance !!!

Si t'a besoin d'aide, MP !!!

58 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 12:43
>>

Oui mais ce n'est pas possible vu que j'ai déja mis ma fonction dans addlistener !!
   
    lab.addEventListener("click", function(...) {...} , false);  
   
        tu met ou hypothenuse, ou l'appel à hypotenuse

       par exemple :
    lab.addEventListener("click",
                function() { champ_où_afficher_le_résultat=hypotenuse(taille_cote_1, taille_cote_2);
                           } , false);  

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 13:55
ben alors mon canard ? tu n'as toujours pas activé/installé le deboggage/debugger ?
un n'a pas de .value !   il a un .innerHTML !
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 14:13
un div ??? ça n'a pas non plus de .value...   ;o)
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 15:19
>>dans le livre que je lisais j'ai recopier la fonction qu'il y avais et elle semble bien marcher !!!
    la fonction... probablement ( pas regardé )
    mais pas ce que tu fais pour "l'appeler"...

  addListener ? c'est quoi....   onclick, onmouseover, onkeypress,
            attachEvent ou addEventListener....   certes, ça baigne...
                            addListener ça n'existe pas pour une balise button ( ou une autre balise )
>>

je n'ai pas d'outils de débogage !!
    tu rigoles ?   très difficile de mettre au point alors ! voire impossible parfois !
    aller, il y a longtemps que je n'ai pas mis ce tableau :
¡————————¡——————————————————————————————————————————————————————————¡
|FireFox |regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
| | |
| | et mieux, télécharger FireBug |
¦————————¦——————————————————————————————————————————————————————————¦
|Internet|activer le deboggage : Outils/options Internet/Avancés |
|Explorer| dans la liste, sous "Navigation" : décocher |
| | ° Afficher une notification de chaque erreur de script |
| | ° Désactiver le débogage de Scripts (Internet Explorer) |
| | |
| | et mieux, télécharger le Debogger IE |
¦————————¦——————————————————————————————————————————————————————————¦
|K—Meleon|regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Opera |regarder la "console d'erreurs" |
| | utils / Asole d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Safari |regarder Debug / Show JavaScript Console |
| | |
| |modif Fichier "Support:\Documents and Settings\utilisateur|
| |\Application Data\Apple Computer\Safari\Preferences.plist"|
| | y ajouter <key>IncludeDebugMenu</key> |
| | <true/> |
!————————!——————————————————————————————————————————————————————————!

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
3

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

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 15:30
>>

addListener c'est la fonction dont je te parle

    j' ai bien vu...

    ce que tu ne comprend pas c'est que cette fonction n'existe pas pour une balise !
          on ne peut pas utiliser ça !

    ce qui est permis c'est attachEvent ou addEventListener
        ( ou onclick, onmouseover... ) rien d'autre !

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 15:33
je répète ?
balise.onclick= function() { alert("toto");   }   ça marche
balise. unefonction =function() { alert("toto");   }  ça ne fonctionnera pas
          unefonction est inconnu pour une balise, dinc javascript n'aime pas.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
3
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
6 avril 2008 à 12:01
J'ai finis par trouver la solution, comme je te l'avais dit avant, le DOM n'était pas encore chargé que les fonction l'était déja alors j'ai fais ce petit code et ça marche plutot bien je dois l'avouer !!!

function initEvent() {
 if(document.all) {
  document.getElementById('button1').attachEvent('onclick', function() {document.getElementById('resultat1').value = reciproque(document.form1.texte1.value, document.form1.texte2.value); } );
  document.getElementById('button2').attachEvent('onclick', function() {document.getElementById('resultat2').value = hypotenuse(document.form2.texte1.value, document.form2.texte2.value); } );
  document.getElementById('button3').attachEvent('onclick', function() {document.getElementById('resultat3').value = cote3(document.form3.texte1.value, document.form3.texte2.value); } );
 } else {
  document.getElementById('button1').addEventListener('click', function() {document.getElementById('resultat1').value = reciproque(document.form1.texte1.value, document.form1.texte2.value); }, false );
  document.getElementById('button2').addEventListener('click', function() {document.getElementById('resultat2').value = hypotenuse(document.form2.texte1.value, document.form2.texte2.value); }, false );
  document.getElementById('button3').addEventListener('click', function() {document.getElementById('resultat3').value = cote3(document.form3.texte1.value, document.form3.texte2.value); }, false );
 }
}


window.addEventListener('load', initEvent, false);



Si t'a besoin d'aide, MP !!!
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 11:23
Bonjour nico,
    tu ne travailles pas avec IE ?
    addEventListener   c'est pour FF et consors, attachEvent sous IE.

<label id="txt" onclick="alert('click initial');"
       style="background-color:#FFFFDD">exemple, cliquer ici</label>
<script type="text/javascript">
function siClick()
{   alert(lab.innerHTML);   }
var lab=document.getElementById("txt");
if (lab.attachEvent)
      lab.attachEvent("onclick", siClick);
else  lab.addEventListener("click", siClick, false);
</script>

   par exemple, c'est ici !
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
5 avril 2008 à 11:32
je sais c'est pour ça que je viens de créer une fonction addListener tout cour avec un if edans en fonctions des navigateurs, ce que je me demande, c'est si il y a des erreurs dans le petit morceau de code que je t'ai mis ici et comment faire pour racorder ce bout de code avec le innerHTML !!!

Si t'a besoin d'aide, MP !!!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 11:42
j'aurais du être plus explicite....
lab.addEventListener("click", siClick, false);
   as tu remarqué : il n'y a pas de () à l'appel de la fonction...
   il faudrait faire
lab.addEventListener("click", function(...) {...} , false);
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
5 avril 2008 à 11:52
Oui, et si je fais comme ça,aurais je ce qu'il y a après le return de ma fonction dans txt ???

Si t'a besoin d'aide, MP !!!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 12:09
>>aurais je ce qu'il y a après le return de ma fonction dans txt ?
    euh....
    si la fonction le fait, ou si derrière ou dans l'appel on met le retour de cette fonction là où le désire.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
5 avril 2008 à 12:17
C'est a dire je n'ai pas très bien compris, attend, je te met un extrait de la fonction, excuse moi des fois je comprend vite et d'autre je ne comprend pas !!!

function hypotenuse(cote1, cote2) {
 var hypotenuse = null;
 hypotenuse = carre(cote1) + carre(cote2);
 hypotenuse = Math.sqrt(hypotenuse);
 return "La racine carrè de l'hypoténuse est : "+hypotenuse;
}

Si t'a besoin d'aide, MP !!!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 12:24
dans ta fonction tu retournes une valeur. ( return "texte... )
donc à l'appel, met le là où tu veux ce retour....
    champ_où_afficher_le_résultat=hypotenuse(taille_cote_1, taille_cote_2);
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
5 avril 2008 à 12:29
Oui mais ce n'est pas possible vu que j'ai déja mis ma fonction dans addlistener !!

Si t'a besoin d'aide, MP !!!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 12:46
>>excuse moi des fois je comprend vite et d'autre je ne comprend pas
    pas d'excuses à donner... c'est pas si simple à comprendre !
    j'ai aussi eu du mal !
    et puis :     T'auras beau m'expliquer dix mille fois , si j'comprend pas, j'comprends pas !
                    j'suis pas une girouette, moi!

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
5 avril 2008 à 12:49
Merci beaucoup et a++

Si t'a besoin d'aide, MP !!!
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
5 avril 2008 à 12:56
Euh en fait j'ai fais comme tu m'a expliqué mais ça marche pas !!!

document.getElementById('button1').addListener('click', function() {document.getElementById('resultat1').value = reciproque('document.form1.texte1.value', 'document.form1.texte2.value', 'document.form1.texte3.value');}, false);
document.getElementById('button2').addListener('click', function() {document.getElementById('resultat2').value = hypotenuse('document.form2.texte1.value', 'document.form2.texte2.value');}, false);
document.getElementById('button3').addListener('click', function() {document.getElementById('resultat3').value = cote3('document.form3.texte1.value', 'document.form3.texte2.value');}, false);

Si t'a besoin d'aide, MP !!!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 13:16
et pourtant ça marche....
mais on n'a pas ta fonction addlistener
    et il ne faut pas confondre toto avec 'toto'

ch'tit exemple ( uniquement avec FF ! )

<form  name= "form2">
   
   
</form>

<script>
    function hypotenuse(z1,z2)
    {    return Number(z1)*Number(z2); }   // pour simplifier !!!
    document.getElementById('button2').addEventListener(
    'click',
    function() {    document.getElementById('resultat2').value = hypotenuse(document.form2.texte1.value, document.form2.texte2.value);},
    false);
</script>

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
5 avril 2008 à 13:33
La fonction addlistener est une fonction que j'ai trouvé dans un livre et que j'ai retranscrite sur mon ordi !!!

function addListener(element, basename, handler) {
 if(element.addEventListener)
  element.addEventListener(basename, handler, false);
 else if(element.attachEvent)
  element.attachEvent('on' + basename, handler);
}

Si t'a besoin d'aide, MP !!!
0
Rejoignez-nous