2014-09-19 2 views
0

javascript를 사용하여 저장된 값에서 HTML 양식을 채 웁니다.getElementById는 코드에서 null을 반환하지만 콘솔에서 작업합니다.

나는 나중에 실행하는 js 함수를 생성하기 위해 PHP 스크립트를 사용하기 때문에 확인란의 표를 확인해야합니다.

for($i = 0; $i < count($day_pos) - 1; $i++) 
{ 
    if ($day_pos[$i + 1] - $day_pos[$i] > 7) 
    { 
     if ($day_pos[$i + 1] - $day_pos[$i] > 8) 
     { 
      echo ("document.getElementById(\"".$rdv_days[$i * 2]."\").checked = true;"); 
      echo ("\ndocument.getElementById(\"".$rdv_days[$i * 2 + 1]."\").checked = true;"); 
     } 
     else if ($uf_hours[$day_pos[$i] + 5] == "sur") 
     { 
      echo ("document.getElementById(\"".$rdv_days[$i * 2]."\").checked = true;"); 
     } 
     else 
     { 
      echo ("document.getElementById(\"".$rdv_days[$i * 2 + 1]."\").checked = true;"); 
     } 
    } 
    echo("\n"); 
} 

echo ("</script>"); 

이 기능을 사용하기 이전의 모든 기능은 정상적으로 작동합니다.

$ rdv_days는 확인란의 모든 ID가있는 배열입니다.

내가 양식 페이지를로드 할 때, 그것은 나에게 오류 발생 :

Uncaught TypeError: Cannot set property 'checked' of null

오류가 내 JS 기능에에서 getElementById를 수행 줄입니다.

하지만 크롬에서 디버거 콘솔을 사용하여 오류가 발생한 행을 중단하고 콘솔의 표현식을 평가하면 잘 작동합니다.

id 문자열에 숨겨진 문자가 포함되어 있지 않은지 확인했습니다.

정말 요소를 찾을 수없는 이유를 이해하지 못합니다. 시간에 대한

감사

편집 : 여기

여기에서 생성 된 코드 (단지 부분 웹 페이지가 4000 선입니다)

document.getElementById("rdvMatLun3").checked = true; 
document.getElementById("rdvApLun3").checked = true; 

입니다 그리고 나중에 그와 관련된 테이블입니다 페이지에서

<td> 
<input type='checkbox' id='rdvMatLun3' name='rdvMatLun3' value='1'/>RDV</td> 
</td> 
+6

대부분의 경우 해당 요소는 JS 코드가 실행되는 시점에 존재하지 않습니다. 이 확실하지 – CBroe

+0

하지만이 함수를 호출하는 방법'\ ndocument.getElementById' – karan3112

+0

그게 여기 \의 n''후 공간을 제공하려고 : <몸의 온로드를 = "자바 스크립트 : initialisation_formulaire (0);"> – Nowahe

답변

0

문서 본문이 끝나기 전에 코드를 실행하십시오. 모든 웹 사이트 데이터로드가 완료되었는지 확인합니다.

(function() { 
    // your code here 

})(); 
</body> 
+1

왜 그런 간단한 것들에 대한 allways jQuery가 있나? – rekire

+0

그리고 웹 페이지가로드되고 목록의 묶음 값을 설정 중이며 작동하므로 요소가로드됩니다 – Nowahe

+1

@rekire, 즉 _not_ jQuery ... – epoch

관련 문제