Problème avec removechild() [Résolu]

Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- - Dernière réponse : nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
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 !
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
3
Merci
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        

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_bultez
Messages postés
1253
Date d'inscription
mercredi 7 août 2002
Dernière intervention
10 avril 2013
3
Merci
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 !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de nickadele
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
3
Merci
>>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        

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
3
Merci
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        

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
3
Merci
>>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        

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_bultez
Messages postés
1253
Date d'inscription
mercredi 7 août 2002
Dernière intervention
10 avril 2013
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de nickadele
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
0
Merci
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 !
Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
0
Merci
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 !
Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
0
Merci
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 !
Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
0
Merci
ok, je vais essayer de la passer en global !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
0
Merci
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 !
Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
0
Merci
ok, je vais essayer !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
0
Merci
ça marche, merci !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Commenter la réponse de nicomilville
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
0
Merci
ok, merci nickadele !!!

a++

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.