Problème avec removechild()

Résolu
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
- 10 juil. 2008 à 09:10
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
- 10 juil. 2008 à 15:54
Salut,

J'ai fait une fonction pour afficher les derniers messages et j'ai aussi mis dans cette fonction un évènement click sur un élément mais cette fonction me retourne une erreur et je ne vois pas d'ou ça peut venir et je ne comprend rien a l'erreur :-(

J'ai cette erreur dans la console d'erreur firefox et aussi dans firebug !

Ma fonction :

function aff_message() {
    var O_nouveauxMessages = document.createElement('div');
    O_nouveauxMessages.setAttribute('id','nouveaux_messages');
    document.getElementById('conversation').appendChild(O_nouveauxMessages);
   
    if(document.getElementById('nouveaux_messages')) {
        if(document.all) {
            document.getElementById('nouveaux_messages').attachEvent('onclick',function() {document.getElementById('conversation').removeChild(O_nouveauxMessages);});
        } else {
            document.getElementById('nouveaux_messages').addEventListener('click',function() {document.getElementById('conversation').removeChild(O_nouveauxMessages);},false); // ligne 117
        }
    }
   
    actu_liste();
}

Mon erreur :

Erreur : [Exception... "Node was not found"  code: "8" nsresult: "0x80530008 (NS_ERROR_DOM_NOT_FOUND_ERR)"  location: "http://xdelefosse.free.fr/chat_NRJ/fonctions.js Line: 117"]
Fichier Source : http://www.javascriptfr.com/ScriptResource.axd?d=fm3QPHKd7rWkaSJCYrhchCOUdIOYtsiHNm8MTwdcYuWDPOnG8dEmuqcO8m15RDe3n0LkV5qQbIoQdNByhMYHqnxUApHf-qQpTBFlBeCHPng1&t=633360908735937500
Ligne : 5

Avez vous une idée ? une solution(encore mieux ) ?

Merci d'avance

a++

Si la réponse vous convient, pensez : Réponse acceptée !

14 réponses

cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
10 juil. 2008 à 12:26
salut nico,

comprend pas pourquoi tu crée un div pour le détruire immédiatement ?
mais bon... ce doit être un extrait de ce que tu fais

O_nouveauxMessages est une variable locale
donc uniquement utilisable dans la fonction  aff_message
elle n'est donc pas connue dans les fonctions ajoutées sur onclick

( remarque : il me semble que tu te compliques drôlement la vie... )

<hr />                Cordialement            Bul        
3
nickadele
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

10 juil. 2008 à 14:03
J'ai pas trop bien compris le pourquoi du comment non plus !
Même remarque que bultez concernant O_nouveauxMessages :
if(document.all) {
document.getElementById('nb_message').attachEvent('onclick',function() {document.getElementById('conversation').removeChild('nouveaux_messages');});
} else {
document.getElementById('nb_message').addEventListener('click',function() {document.getElementById('conversation').removeChild('nouveaux_messages');},false);
}
Remarque concernant la première version :
Le fait qu'un objet ('nouveaux_messages')appel son parent pour s'auto supprimer ne va-t-il pas également générer une erreur !
3
cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
10 juil. 2008 à 14:13
>>comment je fais alors ?
soit tu met la variable en global, soit tu la passes en paramètre.

>>Pourquoi dis tu que je me complique la vie ?
parce que tu utilises des "techniques" style des soit-disant "framework" ( enfin...
pour être juste, disons plutôt  "bibliothèques de fonctions", ne soyons pas ridicules ! )
qui sont cencés répondre à tout, dans tous les cas...
là ce n'est pas toi qui développe ? tu ne sais ce que tu fais ?
exemples ?
>>attachEvent ou addEventListener ? 
   il existe déjà une fonction ?
>>if(document.getElementById('nouveaux_messages'))
   bof.. tu viens de le créer
...etc...

si tu crée un "machin" tendance universelle... certes ( et encore !!  ),
pour une application : tu te compliques inutilement la vie.

<hr />                Cordialement            Bul        
3
cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
10 juil. 2008 à 14:44
en javascript ( pas seulement ) :
ce qui est déclaré dans une fonction est local
hors d'une fonction, c'est global

ou alors faut utiliser var windows["toto"]...   
mais bon... c'est utile si le nom est dynamique ( et enocre )

je ne connais pas le mot clé global en js ( mais je connais peu de choses )

<hr />                Cordialement            Bul        
3

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

Posez votre question
cs_bultez
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
10 juil. 2008 à 14:49
>>Mais j'ai pas bien compris l'histoire de la variable, je suis toujours dans la fonction,
ben non ! justement.... tu "seras" plus dans la fonction aff_message
lors du click !
c'est comme si tu avais sur la balise un onclick="fonction_1();"
dans fonction_1 tu ne saurais pas utiliser O_nouveauxMessages déclarée
dans la fonction aff_message. là c'est pareil.
<hr />                Cordialement            Bul        
3
nickadele
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

10 juil. 2008 à 15:50
Pour complèter les explications de bultez concernant l'utilisation de variable lors de la création de la fonction au travers d'une autre fonction :

C'est comme si tu essayais d'utilisé coté client une variable qui a été déclaré coté serveur.
3
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
10 juil. 2008 à 12:00
l'erreur est exactement sur cette ligne :

document.getElementById('nb_message').addEventListener('click',function() {document.getElementById('conversation').removeChild(O_nouveauxMessages);},false);

voici le code modifié :

function aff_message() {
 var O_nouveauxMessages = document.createElement('div');
 O_nouveauxMessages.setAttribute('id','nouveaux_messages');
 document.getElementById('conversation').appendChild(O_nouveauxMessages);
 
 if(document.getElementById('nouveaux_messages')) {
  if(document.all) {
   document.getElementById('nb_message').attachEvent('onclick',function() {document.getElementById('conversation').removeChild(O_nouveauxMessages);});
  } else {
   document.getElementById('nb_message').addEventListener('click',function() {document.getElementById('conversation').removeChild(O_nouveauxMessages);},false);
  }
 }
 
 actu_liste();
}

aidez moi svp !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
10 juil. 2008 à 14:00
Salut bultez,

comment je fais alors ?

Pourquoi dis tu que je me complique la vie ?

je créer un div et quand je clique dessus il doit disparaitre...

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
10 juil. 2008 à 14:06
si, je m'étais trompé de div ! lol !

Mais j'ai pas bien compris l'histoire de la variable, je suis toujours dans la fonction, je devrai donc pouvoir l'utiliser !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
10 juil. 2008 à 14:16
ok, je vais essayer de la passer en global !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
10 juil. 2008 à 14:33
Re,

J'ai fais des recherches sur les variables glbal et j'ai vu d'anciennes discutions qui en parlais mais je ne suis pas sur que ce soit la même syntaxe...

ancienne syntaxe :

- façon 1 :

var variable = ...;

function fonction() {
var variable2 = ...;

var add = variable + variable2;
}

- façon 2 :

function fonction() {
window['variable'] = 'text';
}

Ces deux façon sont anciennent, n'y a t'il pas une nouvelle syntaxe ?

Si oui pouvez vous me la monter ?

Si non a quoi sert le mot clé 'global' en javascript ?

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
10 juil. 2008 à 14:52
ok, je vais essayer !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
10 juil. 2008 à 14:58
ça marche, merci !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
nicomilville
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
10 juil. 2008 à 15:54
ok, merci nickadele !!!

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0