2014-04-13 9 views
0

이것은 책 (Ninja javascript) 중 하나의 예제입니다.책에서 자바 스크립트 연습 닌자 자바 스크립트

내가 .. 내가 뭔가 잘못하고있는 중이 야 오류를 볼 경우

 document.getElementById("results").appendChild(li); 

입니다 .. 콘솔은 null로 추가 할 수 없습니다 불평을 유지하는 이유는 확실하지 않다?

전체 코드는 다음과 같습니다 :

  <body> 
    this.assert = function assert(value, desc) { 
     var li = document.createElement("li"); 
     li.className = value ? "pass" : "fail"; 
     console.log("this is ", value); 
     console.log("that is ", desc); 
     console.log("that is ", li); 
     // console.log("that is ", className); 
     //console.log("that is ", results); 
     li.appendChild(document.createTextNode(desc)); 
     document.getElementById("results").appendChild(li); 

     if (!value) { 
      li.parentNode.parentNode.className = "fail"; 
     } 
     return li; 
    }; 

    function useless(callback) {return callback(); } 

    var text = "Domo Arigato!"; 
    assert(useless(function() {return text;}) === text, 
      "The useless function works! " + text); 
</script> 


<ul id="results"></ul> 

UPDATE : 하나 개 더 질문

: 제안은 지금 잘 작동 후 .. 당신에게 모든

<script> 
    window.onload = function() { 
     function useless(callback) {return callback(); } 

     var text = "Domo Arigato!"; 
     assert(useless(function() {return text;}) === text, 
      "The useless function works! " + text); 

    } 
</script> 


<ul id="results"></ul> 

UPDATE 감사합니다

assert(useless(function() {return text;}) === text, 

위에 === 텍스트가 필요한 이유는 무엇입니까? 여기에는 어떤 목적이 있습니까? (난 그냥 테스트없이 === 텍스트, 그것은 또한 작동합니다 .. 그래서 저자의 의도가 여기에 있었는지?)

resultsid를 가진 요소가 페이지에 존재하기 전에 스크립트를 실행하기 때문이다

답변

1

.

할 수 있습니다 :

  • 장소 스크립트 뒤에
  • 더 개방이에도 없다 더 적절한 이벤트가 DOMContentLoaded 이벤트
+1

window.onload 이벤트

  • 동안 스크립트를 실행
  • 관련 문제