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 :

Décomposer une variable


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut Décomposer une variable
    Bonsoir,

    J'ai une une fonction javascript comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function openFile(file) {
       document.location= 'editer?f='+file;		
    }
    Qui me permtet de récupérer un nom de fichier par contre il me met aussi les retour dossier, c'est à dire qu'avec ce code j'ai sa comme résultat:
    editer?f=../../../../content/accessoires.php
    Pourriez-vous m'expliquer la démarche pour supprimer cette partie
    ../../../../content/
    et avoir que le nom du fichier?

    Je met quand même tout le code ce seras plus compréhensible:

    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
     
    <script type="text/javascript">
    		function openFile(file) {
    			document.location= 'editer?f='+file;		
    		}
     
    		$(document).ready( function() {
    			$('#arbo').fileTree({ 
    				root: '../../../../content/', 
    				script: 'plugins/jqueryFileTree/connectors/jqueryFileTree.php', 
    				folderEvent: 'click', 
    				expandSpeed: 750, 
    				collapseSpeed: 750, 
    				multiFolder: false 
    				}, function(file) { 
    					openFile(file);
    			});
    		});
    </script>
    merci

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Il y a sans doute moyen de s'en sortir avec les expressions régulières mais je ne les manie pas fort bien.
    Il existe par contre des méthodes sur les chaines de caractères. Un Chaine.lastIndexOf("/") suivi d'un Chaine.substring(depart,fin) est tout à fait possible. De même qu'un Chaine.split("/") dont vous prendriez la dernière valeur.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    en effet avec les RegExp ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chaine="../../../../content/accessoires.php" 
    alert(chaine.match(/[^/]*$/))
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut
    Merci pour vos réponse, sa fonctionne avec le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function openFile(file) {
    				var url = file;
    				var elem = url.split('/');
    				lien = elem[5];
    			document.location= 'editer?f='+lien;
    		}
    Le souci maintenant c'est que je souhaite créer une arborescence avec mon code j'arrive à afficher les fichiers et dossiers contenu dans le dossier root et maintenant quand je clique sur un fichier il s'ouvre dans un textarea, seulement si je clique sur un dossier qui contient des fichiers je ne peux pas éditer ces fichiers puisqu'avec cette solution il renvoie l'adresse suivante:

    editer?f=NOM_DU_DOSSIER

    alors qu'il me faudrait

    editer?f=NOM_DU_DOSSIER/NOM_DU_FICHIER

    alors j'ai bien compris qu'il fallait que je récupert l'élément elem[6] pour avoir la suite mais déja quand je fais ça sa ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function openFile(file) {
    				var url = file;
    				var elem = url.split('/');
    				lien = elem[5] '/' elem[6];
    			document.location= 'editer?f='+lien;
    		}
    la sa me plante tout, je ne sais pas comment lui dire qu'il faut un slash entre les deux element,de plus comme je cherche à faire une arborescence pour éditer de fichier il faut que je fasse une fonction qui prend l'element elem[5] pour les fichiers qui sont directement dans le dossier root "content" en l'occurence mais il faut qu'il prenne les autres element quand il y a des sous dossier, vous voyez ce que je veux dire

    un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function openFile(file) {
    				var url = file;
    				var elem = url.split('/');
                                    if (elem[6] == NULL){
    				lien = elem[5];
                                    }else{
                                    lien = elem[5] + elem[i]++;
                                    }
    			document.location= 'editer?f='+lien;
    		}
    sa fonctionne pas ce code c'est juste pour vous expliquer ou je veux en venir.

    merci pour votre aide.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    tu ne crois pas que l'incrément serait mieux sur le i ???


    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Vous devez utiliser un opérateur de concaténation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lien = elem[5] + '/'  + elem[6];
    La version split renvoi un tableau dont vous pouvez prendre la dernière et l'avant dernière valeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var derniere = elem.length;
    var avant_derniere = elem.length -1;
    La version de l'expression régulière vous donne directement la dernière. En adaptant l'expression régulière, vous pouvez obtenir "le dernier dossier/le fichier". A vous de voir.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut /[^/]*$/
    Merci pour vos réponses;

    C'est vrai qu'avec l'expression régulière sa fonctionne bien comme ceci mais c'est le problème inverse j'ai le nom du fichier mais pas le nom du dossier.

    En faite il me faut tout les élément après le dossier "content" sa doit être faisable avec les expression régulière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function openFile(file) {
    				lien = file.match(/[^/][content/]*$/);
    			document.location= 'editer?f='+lien;
    		}
    mais je suis pas fort en expression régulière non plus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Décomposer une variable en plusieurs variables
    Par id301077 dans le forum SAS Base
    Réponses: 5
    Dernier message: 30/09/2009, 11h49
  2. [Tableaux] Décomposer une variable en un tableau
    Par camcam8782 dans le forum Langage
    Réponses: 2
    Dernier message: 02/09/2009, 22h55
  3. Décomposer une variable de liste déroulante.
    Par GYK dans le forum Langage
    Réponses: 11
    Dernier message: 07/03/2009, 16h00
  4. [Tableaux] Décomposer une variable
    Par lama85 dans le forum Langage
    Réponses: 1
    Dernier message: 07/09/2006, 13h29
  5. Réponses: 5
    Dernier message: 11/08/2006, 10h29

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