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

jQuery Discussion :

Charger une balise XML au hasard


Sujet :

jQuery

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 63
    Points : 63
    Points
    63
    Par défaut Charger une balise XML au hasard
    Bonjour,

    Pour le bien d'un site je dois charger les informations de plusieurs div grâce à un seul XML.

    Celui-ci ce présente sous cette forme :
    Code xml : 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
    20
    21
    22
    23
    <?xml version="1.0" encoding="UTF-8"?>
    <data>
    	<block >
    		<class>one</class>
    		<titre>Titre</titre>
    		<image path="images/image1.jpg"></image>
    		<image path="images/image2.jpg"></image>
    		<image path="images/image3.jpg"></image>
    		<description>
    		Une super description
    		</description>
    		<bgcolor>#de052d</bgcolor>
    	</block>
    	<block >
    		<class>two</class>
    		<titre>Titre2</titre>
    		<image path="images/imagetwo.jpg"></image>
    		<description>
    		Une super description2
    		</description>
    		<bgcolor>#de052d</bgcolor>
    	</block>
          etc...
    Donc il y a :
    • Un titre
    • Une image
    • Une description
    • La couleur de bg de la div


    Seulement voila il une div la .one qui a 3 image et donc je dois en prendre une des trois au hasard. Mais voila je ne sais pas comment :/ .

    J'ai pour ce faire le code Jquery suivant :

    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
    20
    21
    22
    var jqxhr = $.get("banner.xml", function(data) {
    $(data).find('block').each(function(){// find all blocks
     	var $block = $(this);
    	var classs = "."+$block.find('class').text();
     
    	var image = $block.find("image").attr("path");
     
    	$(classs).find(".content").css("background-color", $block.find("bgcolor").text() );
    	$(classs).find(".contain").css("background-color", $block.find("bgcolor").text() );
     
    	if(classs==".one") {
     
    		//Prendre une des 3 images
     
    	} else {				
    		$(classs).find("img").attr("src", image );
    	}
     
    	$(classs).find("h2").text( $block.find("titre").text() );
    	$(classs).find(".description").html( $block.find("description").text() )		
    });
    })
    • Donc je charge mon XML
    • je parcours les block
    • je prends l'attribut path pour l'image
    • je mets met backgroud
    • si la classe est one je prend une des 3 images 3 est un exemple il peut en y avoir qu'une ou 5 même 1000
    • sinon je prends simplement l'image
    • je mets mon h2 et ma description


    Et je suis paumé je serait tenté de faire un
    <image id="1" path="images/ima-bpk1.jpg"></image>
    <image id="2" path="images/ima-bpk2.jpg"></image>
    <image id="3" path="images/ima-bpk3.jpg"></image>

    merci pour votre aide

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    $( function(){
     
    	// retourne X tel que : min <= X <= max
    	function intRandom( min, max ){
    		return Math.floor( Math.random() * ( max - min + 1 ) + min );
    	}
     
    	var jqXHR = $.get( "effaceXml.xml", "xml" );
     
    	jqXHR.done( function( data, textStatus, jqXHR ){
    		// succès de la transaction, on doit traiter le contenu de data
     
                   // debug 
    		// console.log( data, textStatus, jqXHR );
     
    		$( data ).find( "block" ).each( function( i, item ){
     
    			var tab = [],
    				tabImg = [];
     
    			$( item ).children().each( function( j, jtem ){
    				if ( jtem.tagName == "image" ){
    					tabImg.push( $( jtem ).attr( "path" ) );
    				} else {
    					tab.push( $( jtem ).text() );
    				}
    			});
     
    			// debug
    			// console.log( tab, tabImg, tabImg[ intRandom( 0, tabImg.length - 1 ) ] );
     
    			$( "." + tab[ 0 ] )
    				.find( ".content" )
    				.css( "background-color", tab[ 3 ] )
    				.end()
    				.find( ".contain" )
    				.css( "background-color", tab[ 3 ] )
    				.end()
    				.find( "img" )
    				.attr( "src", tabImg[ intRandom( 0, tabImg.length - 1 ) ] )
    				.end()
    				.find( "h2" )
    				.text( tab[ 1 ] )
    				.end()
    				.find( ".description" ).html( tab[ 2 ] );
    		});
     
    	});
     
    	jqXHR.fail( function( jqXHR, textStatus, errorThrown ){
    		// échec de la transaction, gérer la catastrophe
     
    		// debug
    		console.log( jqXHR, textStatus, errorThrown );
     
    	});
     
           /*
    	jqXHR.always( function( jqXHR, textStatus ){
    		// la transaction est terminée
     
    		// debug
    		console.log( jqXHR, textStatus );
    	});
           */
     
    }):

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. [XML][PHP]Extraire balise img dans une balise xml
    Par thierry232323 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 17/10/2006, 13h25
  2. Ajout d'une balise XML
    Par spynux dans le forum Langage
    Réponses: 5
    Dernier message: 31/05/2006, 13h06
  3. [xsl] mauvaise interprétation du contenu d'une balise XML
    Par Cédric B. dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/01/2006, 12h59
  4. [VB.NET] Charger une chaine XML
    Par Dnx dans le forum ASP.NET
    Réponses: 11
    Dernier message: 17/03/2005, 14h55
  5. [JDOM] données un attribut à une balise xml
    Par noobiewan kenobi dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 09/07/2004, 15h54

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