2012-01-18 3 views
2

저는 jQuery를 시작으로 모든 HTML을 동적으로 생성하기 위해 $ (document) .ready()를 사용하려고합니다. 페이지가로드되는 시간. 나는이 같은 자바 스크립트 코드 인라인 사용할 때 잘 작동합니다 (이 예 분명히 단순화되어 있지만, 문제의 동작을 보여줍니다) : 내가 함께 자바 스크립트를 외부 자바 스크립트 파일에 연결하고 인라인을 대체하는 경우, 그러나

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> </script> 
    <link rel="stylesheet" type="text/css" href="styles.css" /> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $("#container").html("<p>Hello world</p>"); 
     }); 
    </script> 
    <title>Test</title> 
</head> 
<body> 
    <div id="container"></div> 
</body> 
</html> 

을 이 : 시작을위한 코드가

function start(){ 

$("#container").html("<p>Hello world</p>"); 

} 

아무것도 없다

$(document).ready(start()); 

발생합니다. 외부 start() 함수에 경고 상자를 추가하면 함수가 실행되는 동안 코드가 제대로 표시됩니다. 또한 콘솔에 오류가 표시되지 않습니다. 그러나, 나는 document.getElementById를 ("컨테이너") null의 말,

document.getElementById("container").innerHTML = "<p>Hello world</p>"; 

콘솔에 오류가 제공으로

$("#container").html("<p>Hello world</p>"); 

을 대체합니다.

누군가가 올바른 방향으로 나를 가리킬 수 있다면 정말 고맙겠습니다.

답변

4

코드의이 부분 :

$(document).ready(start()); 

가 있어야한다 :

$(document).ready(start); 

그래서 첫 번째 예에서, 문서가 준비 직전 start()를 호출하고 전달하는 그것은 반환 값이다 당신이 원하는 것이 아닌 $(document).ready()에.

두 번째 예에서는 start() 함수에 대한 참조를 $(document).ready()에 전달하고 나중에 문서가 준비되면 start() 함수를 호출합니다.

+1

아, 비트 나를 +1 –

+0

그것은 일했다! 고마워요 :) –

0

변경 $(document).ready(start());에서 $(document).ready(start);으로 변경하십시오.

관련 문제