bonjour,
je suis débutant en js, alors désolé si j'ai manqué quelque chose...
Je veux remplacer les liens de class="lecteur", qui sont dans le <div class="colonne"> par un <object> (qui sera un lecteur flash)...
Donc le code suivant fonctionne pas mal:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
window.onload = function() {
		son() ;	
		}
 
 function son() {
 	var div = document.getElementById('colonne') ;
 	var liens = div.getElementsByTagName('a') ;
 	var i = 0 ; 
 	while ( i < liens.length ) {
 		var lien = liens[i] ;
 		if ( lien.className == 'lecteur' ) {
 			var papa = lien.parentNode ;
 			var chemin = lien.getAttribute('href') ;
 			var texte = lien.firstChild ;
 
 			var lecteur = document.createElement('object') ;
 			lecteur.appendChild(texte) ; //
 			lecteur.setAttribute( 'id' , lien)
 
 			papa.replaceChild( lecteur,lien) ;
                               //ou: 
 			//papa.insertBefore( lecteur , lien ) ; 
 			//papa.removeChild(lien) ;
 		}
 		i++ ;
 	}
}
sauf que dans la boucle, le lien suivant un lien remplacé n'apparaît plus. C'est à dire que si je met document.write(lien) ; par exemple apres var lien = liens[i] ;, il me manque tous les liens qui suivent immédiatement un <a class="lecteur"> dans le tableau...
Si je commente papa.replaceChild, ça fonctionne, il les affiche tous...
Il semble en fait que lors d'un remplacement, il supprime l'élément de la liste 'liens', et donc c'est logique, le compte 'i' ne correspond plus... Meme si je copie la liste ( var liste = liens ; ), il semble qu'il fait une copie par référence et j'ai le même résultat...
merci d'avance