2011-02-12 3 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); 

      } 

     } 

    } 

이 함수는 처음 세 요소가 하이퍼 링크 인 목록을 생성합니다. 클릭하면 목록에서 항목의 위치 인 i와 함께 getLoch (i)라는 함수 호출을 호출해야합니다. 그러나 내가 값을 전달할 때 배열의 전체 크기가 아니라 위치의 값인 15의 값을 전달합니다.특정 데이터를 가져 오는 함수의 매개 변수로 목록 위치 사용

기능 getLoch (발) {

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

까지 내가 볼 수있는 코드에서이 오류가 있습니다. 첫 번째 방법은 링크를 만드는 방법입니다.

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

이것은 실제로 다음과 같은 코드가 발생합니다 : 변수 i 전달

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

당신이 의도 아마 아닙니다, 당신이 시간 당신 만들기에 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은 링크가 매개 변수로 i를 사용하는 글로벌 i을하고 자바 스크립트 코드를 가진하여 배열의 길이에서 1을 뺀 수있는 마지막 반복의 값을 가지고, getLoch이 있어요 배열 길이로 항상 호출됩니다.

관련 문제