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 confirm�
    Inscrit en
    Mars 2008
    Messages
    80
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    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 : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    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.
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirm�
    Inscrit en
    Mars 2008
    Messages
    80
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    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 confirm�
    Inscrit en
    Mars 2008
    Messages
    80
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    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 confirm�
    Inscrit en
    Mars 2008
    Messages
    80
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    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