2011-02-12 48 views
0
function getList() 
    { 
     var string2 = "<img src='close.png' onclick='removeContent(3)'></img>" + "<h4>Survey Findings</h4>"; 
     string2 = string2 + "<p>The 15 Largest lochs in Scotland by area area...</p>"; 
     document.getElementById("box3text").innerHTML = string2; 


     var myList = document.getElementById("testList"); 


     for(i=0;i<lochName.length;i++) 
     { 


      if(i<3) 
      { 

       var listElement = "<a href='javascript:getLoch(i)'>" + "Loch "+ lochName[i] + "</a>"; 
       var container = document.getElementById("testList"); 
       var newListItem = document.createElement('li'); 
       newListItem.innerHTML = listElement; 
       container.insertBefore(newListItem, container.lastChild); 



      } 
      else 
      { 

      var listElement = "Loch "+lochName[i]; 
      var container = document.getElementById("testList"); 
      var newListItem = document.createElement('li'); 
      newListItem.innerHTML = listElement; 
      container.insertBefore(newListItem, container.lastChild); 

      } 

     } 

    } 

该函数生成一个列表,其中前3个元素是超链接。点击时,他们应该调用函数调用getLoch(i),我是该列表中项目的位置。然而,当我通过它的值只是给它一个15的值,数组的全部大小,而不是位置。使用列表位置作为函数的参数来提取某些数据

功能getLoch(VAL) {

var str = "<img src='close.png' onclick='removeContent(4)'></img>" + "<h4>Loch " + lochName[Val] +"</h4>"; 
    str = str + "<ul><li>Area:" + " " + area[Val] + " square miles</li>"; 
    str = str + "<li>Max Depth:" + " " + maxDepth[Val] + " metres deep</li>"; 
    str = str + "<li>County:" + " " + county[Val] + "</li></ul>"; 

    document.getElementById("box4").innerHTML = str; 


} 

回答

0

有2个错误,在你的代码,据我所看到的。首先是您创建链接的方式。

var listElement = "<a href='javascript:getLoch(i)'>" + "Loch "+ lochName[i] + "</a>"; 

这实际上将导致这样的代码:

<a href='javascript:getLoch(i)'>Loch name</a> 

传递变量i可能不是你预期什么,你希望它在的时候你创建合格i此链接。这将这样做:

var listElement = "<a href='javascript:getLoch(" + i + ")'>" + "Loch "+ lochName[i] + "</a>"; 

那么,为什么你的函数被调用为15的值,列表的长度?在您的getList函数中,您意外地将循环变量i设为全局变量。它只是在你的循环头中缺少一个var

for(var i=0;i<lochName.length;i++) 

循环结束后,i有最后一次迭代的价值,这是你的数组的长度减1.通过i一个全球性的,有你的JavaScript代码中的链接使用i作为参数,getLoch了随时调用你的数组长度。

相关问题