Jump to content
View in the app

A better way to browse. Learn more.

Next

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[resolu]erreur DOM JS

Featured Replies

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.

Edited by Neo-MatriX

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.

  • Author
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".

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

  • Author

Re,

bon j'ai résolu le problème en bidouillant un peu. En créant une petite fonction js pour la création des tr !

Merci bien.

Archived

This topic is now archived and is closed to further replies.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.