JS- ajouter un attribut sur balise dn span

Résolu/Fermé
canarder Messages postés 1714 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 - 27 juil. 2010 à 17:08
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 - 28 juil. 2010 à 14:13
Bonjour, puisque c'est plus facile d'expliquer avec du code, je vais vous expliquer avec :

<span id="empr"><a href="http://www.site.com/"><img src="http://www.site.com/ban.png"></a></span>


J'aimerais ajouter au lien http://www.site.com/ l'attribut target="_blank" en javascript et uniquement pour ce lien qui est présent dans le span avec l'attribut id="empr", c'est pour utiliser cette technique pour les liens vérifiés par des robots dont il manque target="_blank" dans leur lien.

J'ai trouvé ce code mais fonctionne pour toute la page :
document.getElementsByTagName('a')[0].target="_blank";

Alors, j'ai pensé à ce code :
document.getElementById("empr" ).getElementsByTagName('a')[0].target="_blank";


Et ça n'a pas marché.

Après j'ai essayer :

var idempr = document.getElementById("empr" );
idempr.getElementsByTagName('a')[0].target="_blank";


Puis :

document.getElementById('empr').a.target = '_blank';


Quelqu'un peut m'éclairer ? Je continue à cherche évidemment, et je vais me mettre sérieusement à apprendre le javascript que je dit longtemps maîtriser :\ (je le comprend un peu) ...


A voir également:

2 réponses

Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
Modifié par Defouille le 27/07/2010 à 17:26
Bonjour,

je pense que la méthode d'acces est la bonne :
document.getElementById("empr" ).getElementsByTagName('a')[0] ;


mais c'est la méthode de modification de l'attribut qui doit faire une erreur.
Essaye avec :
document.getElementById("empr" ).getElementsByTagName('a')[0].setAttribute('target', '_blank');

Il y a seulement 10 types de personnes, ceux qui comprennent le binaire, et les autres...
0
canarder Messages postés 1714 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
Modifié par canarder le 27/07/2010 à 18:03
ton code ne marche pas
0
SangokuSSJ4 Messages postés 443 Date d'inscription samedi 8 octobre 2005 Statut Membre Dernière intervention 30 janvier 2013 47
27 juil. 2010 à 17:38
Si setAttribute fonctionne avec IE, mais les noms des attributs ne sont pas les mêmes pour lui. Par exemple pour sélectionner l'attribut class, tu mettras setAttribute('className') sous IE, et setAttribute('class') sous firefox. Mais il fonctionne bien sur les deux navigateurs.

Simplement tu développes pas pareil pour les deux, donc il faut gèrer la compatibilité du navigateur, avec des script du genre:

if (navigator.appName.indexOf("Microsoft") == 0){
			//on est sur IE
		var monAttributClass = 'className';
		} else {
			//on est pas sur IE
		var monAttributClass = 'class';
		}
0
canarder Messages postés 1714 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
Modifié par canarder le 27/07/2010 à 19:26
je cherche juste un code précis, tu veux dire setAttribute('classempr') pour class empr ou setAttribute('className','empr') ?
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
28 juil. 2010 à 08:33
c'est
setAttribute('className', 'maClasse') // pour FF
setAttribute('class', 'maClasse') // pour IE


mais pour l'attribut target, je pense que cela marche dans les 2 cas
0
canarder Messages postés 1714 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
28 juil. 2010 à 10:56
et comment on le met ? je veux un code complet car des bouts de code ... dans les tutos ils parlent sois de document.getElementById sois de document.getElementsByTagName mais jamais les deux en même temps
0
canarder Messages postés 1714 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
27 juil. 2010 à 19:26
up
0