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 :

récupérer le résultat d'un script


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 41
    Points
    41
    Par défaut récupérer le résultat d'un script
    Bonjour,

    J'utilise une petit api de diigo pour lister dans mon site web mes signets enregistrés avec ce logiciel, associé à un mot-clé. Mais si ce mot-clé ne correspond à aucun signet, j'obtiens un cadre vide peu élégant. Je voudrais donc n'afficher ce cadre que si le script ma retourne un contenu...
    Je vois deux méthodes pour cela. Dans la première, on récupère le résultat du script dans une chaîne qu'on affiche ou non pour le test, qui ressemblerait à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var tag = javascript
    var links = document.write('<script type="text/javascript" src="http://www.diigo.com/roll2/linkrolls?v=3&username=thibaudoc&l_type=0&count=10&desc=1&style=standard&title=' + tag + '&tags=' + tag + '"><\/script></div></div>');
    Evidemment, links reste vide et document est modifié !

    Deuxième méthode, modifier a posteriori le résultat du script. Plus à ma portée, mais je tombe en fait sur le même souci. Lorsque j'utilise firebug, je vois plusieurs noeuds diigo_linkroll qui correspondent chacun à l'affichage d'un tag. Mais lorsque je regarde le source du document avec firefox, je n'ai qu'un seul noeud appelé par mon script dans une boucle. Du coup, le code suivant, censé me renvoyer le nom des tags utilisés et liés à la valise diigo_linkroll, ne donne pas de résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var links = document.getElementById("diigo_linkroll");
    var txt = '';
    for (var i=0; i<links.length; i++) {
    	txt += links[i].getElementsByTagName('a').content;
    };
    Merci de l'aide,
    Thibaud.

  2. #2
    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
    Déjà, il y a des erreurs de conception dans ton code :
    links étant déjà un mot clé de JavaScript (collection des liens de la page), appeler une variable comme ça est plutôt maladroit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var links = document.getElementById("diigo_linkroll");
    var txt = '';
    for (var i=0; i<links.length; i++) {
    	txt += links[i].getElementsByTagName('a').content;
    };
    Un id devant être unique dans la page, getElementById ne renvoie qu'un seul élément, donc ta boucle n'a aucun sens.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    Merci Bovino.
    Voici le code qui produit l'appel vers diigo (à l'intérieur d'une boucle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.write('<div class="footerinc" ><div id="diigo_linkroll" ><a target="_blank" id="linkroll_title" href="http://www.diigo.com/user/thibaudoc/' + tag + '">' + tag + '</a><br/>');
    document.write('<script type="text/javascript" src="http://www.diigo.com/roll2/linkrolls?v=3&username=thibaudoc&l_type=0&count=10&desc=1&style=standard&title=' + tag + '&tags=' + tag + '"><\/script></div></div>');
    Effectivement, j'utilise le même id pour plusieurs liens, ça n'a pas de sens. Est-ce que je peux remplacer id par class, ou bien vaut-il mieux numéroter ces ids pour la suite ?
    Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write('<div class="footerinc" ><div id="diigo_linkroll" ><a target="_blank" id="linkroll_title' + i + '" href="http://www.diigo.com/user/thibaudoc/' + tag + '">' + tag + '</a><br/>');

  4. #4
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    Hello,

    Avec le script ci-dessous, je supprime bien les noeuds enfants de la classe footerinc qui ne contiennent pas de balise link, mais je ne parviens pas à supprimer le noeud lui-même qui appartient à la classe twitter_sidebar sidebar_box, le code suivant me dit que tw.removeChild(diigoTags[i]); n'est pas d'une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var diigoTags = document.getElementsByClassName("footerinc");
    var tw = document.getElementsByClassName("twitter_sidebar sidebar_box");
    var txt = '';
    var num = diigoTags.length - 1 ;
    for (var i=0; i<num; i++) {
    	if ( diigoTags[i].getElementsByTagName('link').length === 0 ) {	
    		while (diigoTags[i].firstChild) {
    			diigoTags[i].removeChild(diigoTags[i].firstChild);
    		};
    		tw.removeChild(diigoTags[i]);
    	};
    };

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    OK, j'ai ajouté mon propre id dans le code html ce qui permet de supprimer le noeud facilement, ci-dessous le code final.
    Y aurait-il moyen d'éviter d'afficher puis de supprimer le noeud une fois la fenêtre chargée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    window.onload = function() {
    	var diigoTags = document.getElementsByClassName("footerinc");
    	var tw = document.getElementById("doku_sidebar_right");
    	var num = diigoTags.length - 1 ; // because the foot has the same css class
    	for (var i=0; i<num; i++) {
    		if ( diigoTags[i].getElementsByTagName('link').length === 0 ) {	
    			tw.removeChild(tw.childNodes[i]);
    		};
    	};
    };
    Merci,
    Thibaud.

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

Discussions similaires

  1. Récupérer dans Silverlight le résultat d'un script SQL
    Par abbepierre94 dans le forum Silverlight
    Réponses: 11
    Dernier message: 07/03/2011, 00h59
  2. récupérer le résultat d'un script
    Par Ragmaxone dans le forum VBScript
    Réponses: 2
    Dernier message: 15/02/2011, 10h42
  3. Récupérer le résultat d'un script
    Par Marvelll dans le forum SWT/JFace
    Réponses: 0
    Dernier message: 25/03/2010, 11h18
  4. Réponses: 1
    Dernier message: 02/09/2008, 16h40
  5. Réponses: 16
    Dernier message: 16/08/2007, 15h35

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