2009-09-22 9 views
2

J'ai le script suivant et je ne peux pas trouver comment utiliser la valeur dans la voiture [0] ['img'] dans ce $ ('# img2'). Attr ('src ', voiture [0] [' img ']); im un JS noob alors s'il vous plaît expliquez-moi .. pourquoi jquery ne va pas accepter le tableau 2d comme valeur de chaîne et exécuter la fonction, et quelle est la solution possible de mon problème?Jquery atrr + numéro de tableau 2D

var id = 0 ; 
      var car = new Array(); 
      car[0]['img'] = "./images/carousel_img_2.jpg"; 
      car[0]['title'] ="title"; 
      car[0]['desc'] = 'longer description goes here'; 
      car[0]['link'] = "http://goeshere.com"; 
      car[1]['img'] = "./images/carousel_img_3.jpg"; 
      car[1]['title'] ='title'; 
      car[1]['desc'] = 'longer description goes here'; 
      car[1]['link'] = "http://goeshere.com"; 
      car[2]['img'] = "./images/carousel_img_2.jpg"; 
      car[2]['title'] ='title'; 
      car[2]['desc'] = 'longer description goes here'; 
      car[2]['link'] = "http://goeshere.com"; 


      function nxt() { 
     $('#img2').fadeOut('slow', function(){ 

      var img = car[i]['img'] ; 
      $('#img2').attr('src',img); 
     }); 
     $('#img2').fadeIn('slow'); 

      } 

Répondre

3

JavaScript a des types de données distincts pour les tableaux et les dictionnaires (un terme de fantaisie pour les magasins clé/valeur, comme des tableaux associatifs Les tableaux sont soit définis par le constructeur Array() (comme vous l'avez fait) ou par des crochets [], alors que les dictionnaires sont définis avec des accolades {}

un exemple d'un tableau:.

var array = ['one', 'two', 'three]; 
alert (array[0]); // "one"; 

Un exemple d'un Dictioanry:

var dict = { 
    'one': 'one one', 
    'two': 'two two', 
    'three': 'three three' 
} 
alert(dict.one); // "one one" 

Essayez votre retravaillant définition de tableau un peu:

var car = [ 
    { 
     'img': './images/carousel_img_2.jpg', 
     'title': 'title', 
     'desc': 'longer description goes here', 
     'link': 'http://goeshere.com' 
    }, 
    { 
     'img': './images/carousel_img_3.jpg', 
     'title': 'title', 
     'desc': 'longer description goes here', 
     'link': 'http://goeshere.com' 
    }, 
    { 
     'img': './images/carousel_img_2.jpg', 
     'title': 'title', 
     'desc': 'longer description goes here', 
     'link': 'http://goeshere.com' 
    } 
]; 
alert(car[0].img); // "./images/carousel_img_2.jpg" 
+1

Également connu sous le nom de JavaScript Object Notation :) –

+1

Correct! Plus d'info: http://www.json.org –

+0

après avoir changé la définition de mon tableau cela a fonctionné comme un charme :) merci !! – Aviatrix

0

D'abord, se débarrasser de l'./ devant vos img URL. Je doute que ce soit la source de vos problèmes actuels, mais ça ne va pas vous aider plus tard. Il suffit de laisser tomber la barre oblique et d'aller avec "images/blah/blah.png".

Ensuite, où est i défini pour cette fonction nxt()? En ce moment je vois que id est mis à 0 en haut, mais il n'y a pas i déclaré. Même si vous aviez l'intention de le faire id je ne suis pas sûr que cela fonctionnerait puisque vous ne l'itérez pas dans la fonction.

Je crois que vous voulez quelque chose comme:.

function nxt (i) { 
    $('#img2').fadeOut('slow', function(){ 
      var img = car[i]['img'] ; 
      $('#img2').attr('src',img); 
    }); 
    $('#img2').fadeIn('slow'); 

} 
+0

I est déclaré au début du script, mais ne fonctionne toujours pas .. même après j'ai enlevé le ./ – Aviatrix

+0

Est-ce que ça marche la première fois? Essayez d'ajouter 'alert (img)' après avoir déclaré cette variable. Voir combien de fois il alerte et quelle est la valeur sur chacun d'eux. Comme je l'ai dit plus haut, il ne semble pas que vous itérez correctement, en fonction de votre code. – Anthony