IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Rechercher et remplacer code à la volée ?


Sujet :

JavaScript

  1. #21
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Willpower
    Je suis nul en RegExp, donc ma réponse est à prendre avec des pincettes.
    Si, ta réponse est juste

    A un détail près :
    "lien[i]" ne renvoit pas un "string" mais un objet.
    c'est particulier pour les liens qui renvoient en fait l'adresse correspondante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.getElementsByTagName('a')[0]);
    (mais bon, ça reste néanmoins un objet )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(typeof document.getElementsByTagName('a')[0]);

  2. #22
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Oui Merci on rentre bien dans le if maintenant.
    Mais ma fonction ne fonctionne pas !
    Elle est dans le <head> et est appelée avec <body onLoad

    Ce n'est pas dans ce cas qu'il faut mettre des document.write au lieu de innerHTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementByTagName(lien[i].href).innerHTML = 'http:// www.ma_nouvelle_adresse.com/'+partie[1];

  3. #23
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ce n'est pas dans ce cas qu'il faut mettre des document.write au lieu de innerHTML
    Non !
    Le problème ne vient pas de innerHTML ou de document.write() (au passage, tu devrais oublier cette instruction, elle est fortement déconseillée) mais du fait que tu ne comprends pas ce que tu écris...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementByTagName
    C'est getElementsByTagName avec un "s" car cette instruction renvoie une collection d'éléments dont le nom de balise correspond à l'argument passé en paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementByTagName(lien[i].href)
    du coup, là, tu recherches une balise correspondant au contenu du lien d'une balise <a>...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementByTagName(lien[i].href).innerHTML
    et maintenant, tu veux affecter une URL à cette balise imaginaire...

    Commence par le commencement et apprends les bases de JavaScript, ça ne sera pas inutile

  4. #24
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Je galère mais je m'accroche docteur…
    j'ai clarifié la fonction (Merci à vous) et n'y ai plus de problème que pour remplacer les valeurs du lien (mais la valeur de remplacement est bonne… ouf enfin)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script type="text/javascript">
    <!--
    	function changeLien()
    	{ 	
    		var i;
    		var lien = document.getElementsByTagName('a');		
    		for (i=0; i<lien.length; i++) {
    			if (lien[i].href.match(/(.mp4)$/gi)){	
    				document.getElemenstByTagName(a[i].href).innerHTML = 'http://www.nouveau_site.com/'+partie[3];				
    			}
    		}
    	}
    //-->
    </script>
    Citation Envoyé par Bovino
    (au passage, tu devrais oublier cette instruction, elle est fortement déconseillée)
    Aussi, j'ai donc essayé de remplacer mes document.write par des innerHTML (j'ai un javascript dans le <head> qui charge telle ou telle .css suivant que la page est chargée depuis un smartphone ou non.) mais ça ne veut pas fonctionner...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write('<link rel="stylesheet" type="text/css" href="styles_smartphone.css">');
    remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.body.innerHTML += <link rel="stylesheet" type="text/css" href="stylessmartphones.css">;

  5. #25
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 110
    Points : 44 908
    Points
    44 908
    Par défaut
    pourquoi ne pas utiliser la collection document.links qui regroupe tous les liens d'une page ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // recup collection des liens de la page mise en place par les navigateurs
    var oLien = document.links,
        i, nbLien,
        tRecup,
        sDomain = "http://www.developpez.net/";
     
    // boucle sur les liens
    for( i = 0, nbLien = oLien.length; i < nbLien; i++){
      // décompose l'adresse pour récup. du nom du fichier
      tRecup = oLien[i].href.split('/');
      // affectation new adressee
      oLien[i].href = sDomain + tRecup[tRecup.length-1];
    }
    ou encore pour la boucle, plus rapide(?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for( i = 0, nbLien = oLien.length; i < nbLien; i++){
      //  avec pathname en supprimant le / de début
      oLien[i].href = sDomain + oLien[i].pathname.replace('/', '');
    }
    il reste bien sûr à intégrer le test pour autoriser la modif.

  6. #26
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut

    En plus avec cette soluce pas besoin des innerHTML que je n'arrive pas encore à utiliser (même pour charger mes css…) !

    Merci

  7. #27
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 110
    Points : 44 908
    Points
    44 908
    Par défaut
    Citation Envoyé par Mister Paul Voir le message
    En plus avec cette soluce pas besoin des innerHTML que je n'arrive pas encore à utiliser (même pour charger mes css…) !
    Je ne saurais que citer un ancien dicton chinois, période MING me semble-t-il !
    Avant d'utiliser un objet, apprend à connaître ses propriétés pour savoir ce que tu peux en faire.
    et c'est en substance ce que t'a écrit Bovino
    Commence par le commencement et apprends les bases de JavaScript, ça ne sera pas inutile

  8. #28
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut


    Merci pour votre aide et votre patience.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/01/2008, 20h45
  2. Problème code de la fonction Rechercher et Remplacer
    Par LaPanic dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/06/2007, 17h10
  3. Réponses: 4
    Dernier message: 13/10/2005, 14h44
  4. [TP] Recherche d'un code source taquin à 9 cases
    Par dericthebeast dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 03/08/2005, 18h34
  5. Réponses: 11
    Dernier message: 01/12/2004, 19h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo