2014-09-19 111 views
0

我正在使用javascript從保存的值填充html表單。getElementById在代碼中返回null但在控制檯中工作

我必須檢查一個複選框的表,所以我使用一個PHP腳本來生成一個js函數,我稍後執行。

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

的錯誤是在哪裏做的getElementById在我的js函數行。

但是,當我在chrome中使用調試器控制檯時,會中斷它在失敗中的行並在控制檯中評估表達式,它工作得很好。

我已經檢查過,如果id的字符串不包含任何隱藏字符,它不會。

我真的不明白爲什麼它無法找到元素。

感謝您的時間

編輯:

這裏是

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

生成的代碼(只是一個部分,該網頁是4000線),這裏是與後來關聯的表在頁面中

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

在執行JS代碼的時間點,該元素很可能不存在。 – CBroe 2014-09-19 10:58:57

+0

不知道這可是試着給這裏\ N'後''空間\ ndocument.getElementById' – karan3112 2014-09-19 11:00:17

+0

那我如何調用該函數: <身體的onload = 「JavaScript的:initialisation_formulaire(0);」> – Nowahe 2014-09-19 11:00:59

回答

0

在文檔正文結束前執行代碼。它使你確信所有的網站數據完成加載。

(function() { 
    // your code here 

})(); 
</body> 
+1

爲什麼總是這樣簡單的事情jQuery? – rekire 2014-09-19 11:01:18

+0

而網頁被加載,我設置了一堆列表的值,它正在工作,所以元素被加載 – Nowahe 2014-09-19 11:03:53

+1

@rekire,即_not_ jQuery ... – epoch 2014-09-19 11:08:31

相關問題