2013-08-09 8 views
1

저는 학생이고 innerHTML로 인쇄되는 JavaScript "for"루프를 작성하고 있습니다. 문자열의 모든 연결은 마지막에 쉼표가 뒤에 추가됩니다. 마지막 반복 후에 쉼표가 인쇄되지 않게하려면 어떻게해야합니까? 마음의 조각을 위해 쉼표는 과제의 일부가 아니며 실용적인 응용 프로그램을 추가하려고합니다. 아니 jQuery tho주십시오반복 반복을 쉼표로 구분하여 쉼표없이 구분합니다.

window.onload = function(){ 
    var mySeven = 0; 
    var printSeven = document.getElementById('multiples_seven'); 

    for (i=1; i <= 1000; i++){ 
     if (i % 7 == 0){ 
     mySeven += i; 
     printSeven.innerHTML += i + ',' + ' '; 
     } 
    } 
}; 

감사!

+2

논리적으로 생각 해봐. 마지막 요소 (힌트 :'i')에있을 때 어떻게 알 수 있습니까? – FakeRainBrigand

+5

보통 ['join'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript)를 사용합니다./Reference/Global_Objects/Array/join) 배열에 ... – Bergi

+0

@Jonathan, 학생에게 http://www.w3fools.com/을 소개해 주셔서 대단히 감사합니다! – naveen

답변

5

대신 join()을 사용해야합니다. 그것은 훨씬 청소기 그리고 당신은 가장자리의 경우에 대해 걱정할 필요가 없습니다 :

var printSeven = document.getElementById('multiples_seven'); 
    var sevens = []; 
    for (i=1; i <= 1000; i++){ 
     if (i % 7 == 0){ 
     sevens.push(i); 
     } 
    } 
    printSeven.innerText = sevens.join(", "); 

또는 if() 문 불필요한 반복을 피하는 방법 :

var printSeven = document.getElementById('multiples_seven'); 
    var sevens = []; 
    for (i = 7; i <= 1000; i += 7){ 
    sevens.push(i); 
    } 
    printSeven.innerText = sevens.join(", "); 

과 이해를 위해서

가 여기에 방법을 당신은 join()없이이 작업을 수행 할 수 있습니다 :

var printSeven = document.getElementById('multiples_seven'); 
    var maxValue = 1000; 
    var list = ""; 

    for (i = 7; i <= maxValue; i += 7){ 
    list += i; 
    if(i + 7 <= maxValue){ 
     list += ", "; 
    } 
    } 
    printSeven.innerText = list; 
1

사용이 기능 :

function reorderData(){ 
    var sevens = Array(); 
    var printSeven = document.getElementById('multiples_seven'); 
    for (i=1; i <= 1000; i++){ 
    if (i % 7 == 0){ 
     sevens.push(i); 
    } 
    } 
    var newDisplaySelectedArray = sevens.join(","); 
    jQuery("#multiples_seven").val(newDisplaySelectedArray); 
} 
0

먼저 루프 내에서 DOM을 조작하지 않는 것이 좋습니다. 그런 다음 문자열이나 배열에 출력을 구축 한 번의 작업으로 DOM에 추가한다 : 첫 번째 장소에 추가하거나 제거하지 마십시오 :

window.onload = function() { 
    var mySeven = ''; 
    var printSeven = document.getElementById('multiples_seven'); 

    for (i=1; i <= 1000; i++){ 
     if (i % 7 == 0){ 
     mySeven += i + ', '; 
     } 
    } 
    printSeven.innerHTML += mySeven; 
}; 

당신은 두 가지 옵션이 있습니다 쉼표 후행를 삭제하려면 그것을 DOM에 추가하기 전에.

대부분의 다른 답변은을 추가하지에 집중 한 여기를 제거하는 솔루션입니다 :

window.onload = function() { 
    var mySeven = ''; 
    var printSeven = document.getElementById('multiples_seven'); 

    for (i=1; i <= 1000; i++){ 
     if (i % 7 == 0){ 
     mySeven += i + ', '; 
     } 
    } 
    printSeven.innerHTML += mySeven.slice (0, -2); 
}; 

주의의 단어, 만약 당신이 문자 당신을 제거 할 수 있습니다 적어도 하나의 반복을 실행하지 않습니다 루프 표시하려고합니다. 일반적인 경우에는 배열을 만들고 여기에있는 다른 답변 에서처럼 join 함수를 사용하는 것이 더 쉽습니다.

0

그것은 당신이 당신이 그렇게 간단하게 번호 앞에 쉼표를 추가, 마지막에있는 경우보다 첫 번째 항목에 있는지 확인하기 쉽습니다 :

window.onload = function(){ 
    var mySeven = 0; 
    var printSeven = ''; 

    for (i = 1; i <= 1000; i++) { 
    if (i % 7 == 0){ 
     mySeven += i; 
     printSeven += (printSeven.length > 0 ? ', ' : '') + i; 
    } 
    } 

    document.getElementById('multiples_seven') += printSeven; 
}; 
관련 문제