"未捕获的TypeError:无法读取属性'已检查' of null"

时间:2014-01-31 15:12:21

标签: javascript php html

我的PHP和JavaScript代码存在问题。

我把简化的代码放在这里。所以第一步,我想选择“行走”之旅然后提交。我得到了50号旅行,它显示了一个复选框。之后,我想选中复选框并单击“选择复选框”按钮。然后它应该调用myFunction()

但是myFunction()中的代码没有得到结果,因为我收到了错误

  

未捕获的TypeError:无法读取属性'checked'为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>

1 个答案:

答案 0 :(得分: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时,总是在查找属性之前检查返回的元素是否存在。