我希望能够从javascript插入html代码,而javascript会插入包含数组的php代码。我要做的是让变量$团队进入一组团队。然后我用foreach遍历数组以在选择选项中设置值
我已完成以下操作,但不起作用。
document.getElementById('selectTeam').innerHTML = '<select class="form-control"><?php $teams = ControllerTeam::ctrTeam(); foreach ($teams as $key => $value) { echo '<option value="'.$value["id"].'">'.$value["name"].'</option>';}?></select>';
答案 0 :(得分:3)
第一个问题是,可能是在JS之后加载了内容,因此选择器返回null,从而导致OP代码中的错误。 Cannot set property 'innerHTML' of null
这意味着,您仅应在window.load
或任何其他确保执行HTML加载事实的类似事件上执行JS代码。
现在,对于注释中的其他问题,如果您这样重写PHP代码:
<?php
$teams = ControllerTeam::ctrTeam();
$options_html = '';
foreach ($teams as $key => $value) {
$options_html .= '<option value="' . $value["id"] . '">' . $value["name"] . '</option>';
}?>
在JS中-确保将其加载到window.load
或类似名称上-
document.getElementById('selectTeam').innerHTML =
'<select class="form-control"><?php echo $options_html ?></select>';
这使代码更具可读性,并帮助您更轻松地调试。
答案 1 :(得分:0)
您的代码中有错字。请更改为:
document.getElementById('selectTeam').innerHTML = '<select class="form-control"><?php
$teams = ControllerTeam::ctrTeam();
foreach ($teams as $key => $value) {
echo '<option value="' . $value["id"] . '">' . $value["name"] . '</option>';
}
?></select>';