2014-10-19 58 views
0

index.html的Pastebin:http://pastebin.com/g8WpX6Wn(此工作但有一些中断的img链接&没有CSS)。在JavaScript中访问数组内的数组中的元素

Zip文件,如果你想看到整个项目:

我试图动态改变div的内容,当我点击的图像。图像具有相应的id(内部数组中的第一个索引),第一个内部数组中有另一个数组(索引3)。我想用点击图像时使用JQuery的链接来填充div(id =“articleLinks”)。

的JavaScript & JQuery的:

的管阵列。 *注意:tubeArray中每个元素的第一个索引是ID &新闻文章没有链接到任何特定的东西。只关心tubeArray [0] & tubeArray [4]

var tubeArray = [ 
      ['UQ', -27.495134, 153.013502, "http://www.youtube.com/embed/uZ2SWWDt8Wg", 
       [ 
       ["example.com", "Brisbane students protest university fee hikes"], 
       ["example.com", "Angry protests over UQ student union election"], 
       ] 
      ], 
      ['New York', 40.715520, -74.002036, "http://www.youtube.com/embed/JG0wmXyi-Mw", 
       [ 
       ["example.com" , "NY taxpayers’ risky Wall Street bet: Why the comptroller race matters"] 
       ] 
      ], 
      ['To The Skies', 47.09399, 15.40548, "http://www.youtube.com/embed/tfEjTgUmeWw", 
       [ 
       ["example.com","Battle for Kobane intensifies as Islamic State uses car bombs, Syrian fighters execute captives"], 
       ["example.com","Jihadists take heavy losses in battle for Syria's Kobane"] 
       ] 
      ], 
      ['Fallujah', 33.101509, 44.047308, "http://www.youtube.com/embed/V2EOMzZsTrE", 
       [ 
       ["example.com","Video captures family cat saving California boy from dog attack"], 
       ["example.com","Fines of £20,000 for dogs that chase the postman"] 
       ] 
      ] 
     ]; 

一种用于环路经过在tubeArray每个元素然后分配ID到第一索引。另外一个图像,调用功能myFunctionId它采取参数this.id

for (i = 0; i < tubeArray.length; i++) { 
    var id = tubeArray[i][0]; 

    //other code 

    '<img src="img.png" onclick="myFunctionId(this.id);" id="' + id + '">' + 

    //other code 
} 

function myFunctionId (id) { 
     journal = id; 
     alert(journal) //just a test 

     //I want to search through tubeArray with the id and find the matching inner array. 

     //I then want to loop through the innerArray and append to my html a link using JQuery. 
     for (j = 0; i < innerArray.length; j++){ 
      //supposed to get "www.linkX.com" 
      var $link = ; 
      //supposed to get "titleX" 
      var $title = ; 

      //change the content of <div id="articleLinks"> 
      $('#articleLinks').append('<a href=$link>$title</a><br>'); 
     } 
} 

HTML:

<div id="articleLinks"> 
    <a href="http:/www.google.com">Example Link</a><br> 
</div> 

任何帮助将不胜感激。我试图尽可能简化&,以便它可读。

回答

0

或许这可能帮助:让自己的地图就像

var tubeArray = [ 
    [         // tubeArray[0] 
    'id',       // tubeArray[0][0] 
    int,        // tubeArray[0][1] 
    int,        // tubeArray[0][2] 
    [        // tubeArray[0][3] 
     [        // tubeArray[0][3][0] 
      "www.link1.com",   // tubeArray[0][3][0][0] 
      "title1"     // tubeArray[0][3][0][1] 
     ], 
     [        // tubeArray[0][3][1] 
      "www.link2.com",   // tubeArray[0][3][1][0] 
      "title2"     // tubeArray[0][3][1][1] 
     ] 
    ] 
    ], 

等 不知道这是否会有所帮助,但四维阵列的大脑破....

[编辑]

...,从而去喜欢的方式更OO:

var tubeArray = [ 
    'id' : {       // tubeArray[id] or tubeArray.id 
    'a': int,      // tubeArray.id.a 
    'b': int,      // tubeArray.id.b 
    'entries': [      // tubeArray.id.entries 
     {        // tubeArray.id.entries[0] 
      'url': "www.link1.com",  // tubeArray.id.entries[0].url 
      'title': "title1"   
     }, 
     {        // tubeArray.id.entries[1] 
      'url': "www.link2.com", // tubeArray.id.entries[1].url 
      'title': "title2"   ... 
     } 
    ] 
    ] , 
+0

它帮助我更好地形象化,但我不知道如何解决问题。我希望能够在tubeArray中搜索id。 – Spamsational 2014-10-19 23:31:20

+0

对我的答案进行编辑。 – 2014-10-19 23:32:25

+0

我应该编辑什么? – Spamsational 2014-10-19 23:36:43

0

首先,您需要遍历tubeArray,然后转到4深度并在该级别的阵列阵列上循环。当然,你循环这些内部数组并得到元素01

$.each(tubeArray, function(z, o){ 
    $.each(o[4], function(i, a){ 
    $.each(a, function(n, v){ 
     $('#articleLinks').append("<a href='"+v[0]+"'>"+v[1]+'</a>'); // use CSS to break lines 
    }); 
    }); 
} 
+0

您也没有正确连接字符串。想象一下,外部引号正在消失。这是JavaScript,而不是PHP。双引号不解释代码,我只是用它们来保存href值的每一侧的单引号标记。 – PHPglue 2014-10-20 00:07:13

+0

对不起,我试着去了解。我应该只使用单引号(')吗? 编辑:我也没有在我的原始字符串中提到索引是4。所以我假设你的解决方案是: “var i = ** 4 **,l = tubeArray.length; i Spamsational 2014-10-20 00:08:43

+0

没关系。你也可以使用。我使用双引号的唯一时间是如果我把单引号放在它们里面,就像我创建一个HTML字符串一样。我在PHP中做同样的事情。当然,在PHP中使用双引号时,不必连接单个变量或数组元素。 – PHPglue 2014-10-20 00:12:04