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

Signaler
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
-
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
-
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

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>

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]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
un div ??? ça n'a pas non plus de .value...   ;o)
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>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]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>

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]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
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]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
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 !!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>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]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>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]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
Merci beaucoup et a++

Si t'a besoin d'aide, MP !!!
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
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 !!!