Jquery attr + 2D数组问题

时间:2009-09-22 00:19:05

标签: javascript jquery multidimensional-array

我有以下脚本,我无法在$('#img2')中找到如何使用car [0] ['img']内的值.attr('src',car [0] [ 'IMG']); 我是一个JS noob所以请解释我..为什么jquery不接受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');

            }

2 个答案:

答案 0 :(得分:3)

JavaScript为数组和字典提供了独立的数据类型(键/值存储的奇特术语,如关联数组。数组是通过Array()构造函数(如您所做)或通过方括号[]定义的,而字典是用花括号{}定义。

数组的一个例子:

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

一个例子:

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

尝试重新修改数组定义:

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 :(得分:0)

首先,摆脱img网址前面的./。我怀疑它是你当前麻烦的根源,但它不会在以后帮助你。只需删除正斜杠,然后选择“images/blah/blah.png”。

接下来,为i函数定义nxt()的位置?现在我看到id在顶部设置为0,但没有声明i。即使你想要它id我也不确定它是否会起作用,因为你没有在函数内部迭代它。

我相信你想要的东西:

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

 }