2014-01-31 4 views
0

У меня проблема с моим кодом PHP и JavaScript."Uncaught TypeError: Не удается прочитать свойство 'checked' of null"

Здесь я разместил здесь упрощенный код. Итак, первый шаг, я хочу выбрать поездку «Прогулка», а затем отправить. Я получил свою поездку № 50, и у нее есть флажок. После этого я хочу выбрать флажок и нажать кнопку «Выбрать флажок». Затем он должен позвонить myFunction().

Но код внутри myFunction() не получает результат, потому что я получил ошибку

Uncaught TypeError: Cannot read property 'checked' of null

И я пытался поставить myFunction() внутри <head></head>, но он не работает, как хорошо. Любые предложения?

<html> 
<head></head> 
<body> 
<form action = "thispage.php" method = "post"> 
<select name="typesSelect"> 
    <option value="">Walking</option> 
</select> 
<input type="submit" name="searchFormSubmit" value="Search" /> 
</form> 

<button onclick="myFunction();">Select Checkbox</button> 

<?php 
$trip = 1; 
if(isset($_POST['searchFormSubmit'])) 
{ 
$trip = 50; 
?> 
<input type='checkbox' id="myTrip<?php echo $trip;?>"> 

<?php} 

?> 


<script> 
function myFunction() 
{ 

trips = <?php echo JSON_encode($trip); ?>; 
var array; 
initialize(); 
for(var i=0;i<trips.length;i++){ 
      if(document.getElementById("myTrip"+trips[i]+"").checked){        
       $.get('/ajax.php?function=geoData&trip_id='+trips[i], function(data){data=JSON.parse(data);array=data;addLine(data)}) 
     } 

} 
} 
</script> 
</body> 
</html> 
+0

Объявлять поездки перед назначением. Или 'var trip = ; ' –

+1

в вашем javascript, который вы выполняете с # myTrip0 через # myTrip50, но на php вы создаете только один флажок. Возможно, вы просто вырезали слишком много кода в своем примере, но вы жестко кодируете вход, чтобы всегда быть # myTrip50, поэтому цикл javascript будет генерировать исключение, поскольку идентификатор не существует, и вы пытаетесь найти атрибут неопределенного элемент – lonewolf217

ответ

0

Как @ lonewolf217, упомянутый в комментарии, вы ищете элемент, которого не существует.

Вы должны сделать что-то похожее на это:

for(var i=0;i<trips.length;i++){ 
      var elem = document.getElementById("myTrip"+trips[i]+""); 
      if(elem && elem.checked){        
       $.get('/ajax.php?function=geoData&trip_id='+trips[i], function(data){data=JSON.parse(data);array=data;addLine(data)}) 
     } 

} 

Всякий раз, когда с помощью getElementById всегда проверить, что элемент возвращается существует, прежде чем искать собственности.

Смежные вопросы