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