如何在JavaScript中使用innerHTML插入php数组

时间:2019-07-10 00:01:41

标签: javascript php jquery html

我希望能够从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>';

2 个答案:

答案 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>';