2013-04-07 3 views
1

여기에서 읽은 내용을 보면이 코드가 작동 할 것으로 기대되지만 그렇지 않습니다. "lonext"버튼에 클릭 이벤트를 추가하는 두 가지 방법을 시도했습니다. 둘 다 일하지 않아. 왜이게 될지 모르겠다.GetElementbyID가 실행되지 않습니다.

window.onload = function() { 

var goSC = function() { //go to the sucess criteria section 
    document.getElementsByClassName("guidance1").style.display = "none"; 
    document.getElementsByClassName("guidance2").style.display = ""; 
    alert("button clicked"); 

//first try 
document.getElementById("lonext").addEventListener("click", function() { 
    goSC();  
    }, false); 

//second try 
document.getElementById("lonext").onclick = goSC; 

} 
+0

HTML을 표시하고 페이지에서 JavaScript를 구현 한 방법을 제시해야합니다. – Cromax

답변

3

getElementsByClassName 다시 표시 NodeList 같은 클래스가 아닌 하나의 요소와 DOM에 많은 요소를 가질 수 있기 때문이다.

그래서 : 나는 또한 강력하게 검사 등 지르고 또는 크롬 개발자 도구 모음과 같은 자바 스크립트 디버깅 도구를 사용하여 당신을 추천 할 것입니다

$(function() { 
    $('#lonext').click(function() { 
     $('.guidance1').hide(); 
     $('.guidance2').show(); 
    }); 
}); 

:

당신이 jQuery를 사용한 경우
var goSC = function() { 
    var guidance1 = document.getElementsByClassName("guidance1"); 
    for (var i = 0; i < guidance1.length; i++) { 
     guidance[i].style.display = "none"; 
    } 

    var guidance2 = document.getElementsByClassName("guidance2"); 
    for (var i = 0; i < guidance2.length; i++) { 
     guidance[i].style.display = ""; 
    } 

    alert("button clicked"); 
}); 

window.onload = function() { 
    document.getElementById("lonext").onclick = goSC; 
}; 

이 단순화 될 수있다 귀하의 자바 스크립트 코드와 그것으로 잠재적 인 오류를 참조하십시오. Console 탭에는 자바 스크립트 코드의 가능한 오류에 대한 중요한 정보가 포함되어 있습니다.

+1

Nit :'getElementsByClassName'는 배열을 반환하지 않지만 배열과 같은'HTMLCollection' 객체를 반환합니다. 이 구분은 중요합니다. 그렇지 않으면 결과가 [push] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/push)와 같은 배열 메소드를 지원할 것으로 기대할 수 있기 때문에 중요합니다.), ['forEach'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach) 등은 사실이 아닙니다. –

+0

실제로는 배열이 아니라 ['NodeList'] (https://developer.mozilla.org/en-US/docs/DOM/NodeList)입니다. 이는 forEach와 같은 배열 반복자를 사용할 수 없음을 의미합니다. – Bergi

+0

그 점을 지적 해 주셔서 감사합니다. 나는 나의 대답을 업데이트했다. –

관련 문제