Aller au contenu

[resolu]erreur DOM JS


Messages recommandés

bonsoir,

j'ai un soucis avec dom en javascript pour la suppression de noeud.

voici l'ordre des noeuds :

<table>
	  <tr>
			<td>
					<input ...>

Le code est lancé par un input button dans le 4ème td du tr.

fonction js pour l'ajout/suppression de noeud :

function cloneDNS(e){
var oldNode = e.parentNode.parentNode.cloneNode(true);
var parNode=document.getElementsByTagName("table")[1];
var tre=parNode.appendChild(oldNode);
}

function delDNS(e){
var oldNode = e.parentNode.parentNode;
var parNode=document.getElementsByTagName("table")[1];
var tre=parNode.removeChild(oldNode);
}

Le problème vient de la partie qui est générée par PHP, qui elle est impossible à supprimer alors que celle clonée par le DOM se supprime comme des petits pains ! Et après multiple modification je ne trouve pas la solution !

Vous n'auriez pas une solution svp ?

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Il faudrait un peu plus d'infos :

- sur quel(s) navigateur(s) cela se produit

- le message d'erreur que tu obtiens

- comment tu appelle ta fonction (quand ça marche et quand ça marche pas)

Sinon tu peux déjà essayer d'alerter/logguer tes variables pour voir ce qu'elles contiennent vraiment et à quel moment exactement ça déraille.

Autre chose bizarre, normalement l'argument 'e' symbolise l'objet d'évènement hors un objet d'évènement n'est pas un noeud et n'a pas de propriété parentNode... Donc soit tu ne transmet pas d'évènement et tu devrais renommer ton argument ; soit le problème est ailleurs et tes fonctions ne marchent que parceque tu fais une autre erreur dans la transmission de tes arguments.

Lien vers le commentaire
Partager sur d’autres sites

Il faudrait un peu plus d'infos :

- sur quel(s) navigateur(s) cela se produit

- le message d'erreur que tu obtiens

- comment tu appelle ta fonction (quand ça marche et quand ça marche pas)

Sinon tu peux déjà essayer d'alerter/logguer tes variables pour voir ce qu'elles contiennent vraiment et à quel moment exactement ça déraille.

Autre chose bizarre, normalement l'argument 'e' symbolise l'objet d'évènement hors un objet d'évènement n'est pas un noeud et n'a pas de propriété parentNode... Donc soit tu ne transmet pas d'évènement et tu devrais renommer ton argument ; soit le problème est ailleurs et tes fonctions ne marchent que parceque tu fais une autre erreur dans la transmission de tes arguments.

Navigateurs testés : IE / Firefox / Epiphany(idem a FF)

Le message d'erreurs est celiu là:

Node was not found" code: "8

Lorsque je teste les différentes étapes, il me trouve bien le nodeName des noeuds.

Le paramètre donné en argument est par ex:

<input type=\"button\" value=\"Ajouter\" onclick=\"delDNS(this);\" />

Sinon ca marche très bien pour l'ajout, et la suppression de ceux qui ont été créé par JS. Mais ceux généré par PHP c'est niet.

PS : J'ai changé le "e" par "a".

Lien vers le commentaire
Partager sur d’autres sites

Installe firefox pour avoir des erreurs plus précises, surveille bien toutes tes variables, met des breakpoints. Vérifie que ton balisage généré correspond bien à ce que ton script attends.

Sinon de mon côté j'ai testé vite fait : ça marche très bien, que les noeuds soit issus d'un clonage ou du parsing originel.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
 xmlns="http://www.w3.org/1999/xhtml"
 lang="fr">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title>test</title>
 
 <style type="text/css">
 	*{
 		margin: 0;
 		padding: 0;
 	}
 	.delZone{
 		background: #f00;
 		padding: 12px;
 		margin: 5px;
 		float: left;
 	}
 </style>
 
 <script type="text/javascript">
 	function cloneDNS(myNode){
 		var clonedNode = myNode.parentNode.cloneNode(true);
 		var insertedNode = myNode.parentNode.parentNode.appendChild(clonedNode);
 	}
 	function delDNS(myNode){
 		var oldNode = myNode.parentNode;
 		var deletedNode = oldNode.parentNode.removeChild(oldNode);
 	}
 </script>
</head>

<body>
 <div>
 	<div class="delZone">
 		<a href="#" onclick="delDNS(this)">delete me !</a><br/>
 		<a href="#" onclick="cloneDNS(this)">clone me !</a><br/>
 	</div>
 	<div class="delZone">
 		<a href="#" onclick="delDNS(this)">delete me !</a><br/>
 		<a href="#" onclick="cloneDNS(this)">clone me !</a><br/>
 	</div>
 </div>
</body>
</html>

Edit : firebug, pas firefox, dsl

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...