2013-08-22 3 views
0

wunderNav div에서 1 씩 증가하는 일련의 앵커 태그를 만들려고합니다.자바 스크립트 - 일련의 <a> div 내에서 태그 만들기

console.log (counter)와 함께이 루프를 실행할 때; 그것은 나에게 멋진 목록 1 - XX를 준다. 앵커 태그를 추가하려고하면 시리즈의 마지막 부분 만 추가됩니다.

for(var counter = 1; counter <= thisGM.grids.length; counter++){ 
    document.getElementById('wunderNav').innerHTML = '<a id="wunderNumber'+ counter +'" href="javascript:thisGM.goToGridPage('+ counter + ');">' + counter + '</a>'; 
} 

누구나 고맙습니다. 자바 스크립트가 처음이었고 벽에 머리를 대고있었습니다. 여기

내가 필요한 것입니다 : 말 그대로 해당 노드의 내용을 대체

for(var counter = 1; counter <= thisGM.grids.length; counter++){ 
    document.getElementById('wunderNav').innerHTML += '<a id="wunderNumber'+ counter +'" href="javascript:thisGM.goToGridPage('+ counter + ');">' + counter + '</a>';} 
+2

innerHTML을 설정할 때 = 대신 + =를 사용하십시오. =를 사용하면 매번 innerHTML이 재설정되므로 루프의 마지막 항목 만 제공됩니다. –

+0

@ Bucky24 정확히, document.getElementById ('wunderNav'). innerHTML ='는 document.getElementById ('wunderNav') 여야합니다. innerHTML + ='루프 전에 리셋해야합니다. – abc123

+0

감사합니다. –

답변

6

할당 .innerHTML에. APPEND (예 :

var w = document.getElementById('wunderNav'); 
for(...) { 
    w.innerHTML += '<a ....></a>'; 
       ^^-- string concatenation 
} 

또한 코드 스 니펫에있는 HTML이 유효하지 않습니다. <a>으로 시작하지만 </span>으로 끝나야합니다.

+2

이것은 맞을지 모르지만 루프에서 큰 HTML 문자열을 만들고 루프 다음에 'innerHTML'을 설정하여'innerHTML' ** once **를 설정하는 것이 좋습니다. 또는 DOM 메소드를 사용하여보다 명확하게 – Ian

1

반복 할 때마다 wunderNav의 내용을 지 웁니다. 현재 innerHTML div에 추가하려면 = 대신 +=을 사용하십시오.

document.getElementById('wunderNav').innerHTML += '<a id="wunderNumber'+ counter 
    +'" href="javascript:thisGM.goToGridPage('+ counter + ');">' 
    + counter + '</span>';} 
1

당신은 모든 루프 사이클에서 대신을 추가해야합니다

var elem = document.getElementById('wunderNav'); 
elem.innerHTML = elem.innerHTML + '<a id="wunderNumber'+ counter +'" href="javascript:thisGM.goToGridPage('+ counter + ');">' + counter + '</a>';} 
1
for(var counter = 1; counter <= thisGM.grids.length; counter++){ 
    document.getElementById('wunderNav').innerHTML += '<a id="wunderNumber'+ counter +'" href="javascript:thisGM.goToGridPage('+ counter + ');">' + counter + '</a>'; 
} 
0

이 시도 :

for(var counter = 1; counter <= thisGM.grids.length; counter++){ 

    document.... += '<a id="wunder....">' + counter + '</span>'; 

} 

사용 +==의 insted. 모든 앵커 태그를 이전 앵커 태그에 결합해야하기 때문입니다.

행운을 빌어 요.

관련 문제