如何在javascript中插入带有innerHTML的php数组

Posted

技术标签:

【中文标题】如何在javascript中插入带有innerHTML的php数组【英文标题】:How to insert a php array with innerHTML in javascript 【发布时间】:2019-11-19 13:22:21 【问题描述】:

我希望能够从 javascript 中插入 html 代码,它会插入包含数组的 php 代码。我所做的是在变量 $ teams 中获取一组团队。然后我用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>';

【问题讨论】:

“不起作用”是什么意思?它不改变内容吗?改成的内容不正确? 而不是 PHP 代码,尝试硬编码 &lt;option value="123"&gt;Aha&lt;/option&gt; 看看是否可行 @cornel.raiu 控制台抛出以下错误:login.js: 78 Uncaught TypeError: Can not set property 'innerHTML' of null。我尝试了一个更简单的例子,它可以工作。我认为问题是innerHTML中php部分中双引号和单引号的组合 这行得通吗? document.getElementById('selectTeam').innerHTML = '&lt;select class="form-control"&gt;&lt;option value="123"&gt;Aha&lt;/option&gt;&lt;/select&gt;'; @cornel.raiu 是的。现在最简单的例子起作用了。现在问题出在内部的php部分,我想我确定是因为双引号和单引号 【参考方案1】:

第一个问题是,内容可能是在 JS 之后加载的,因此选择器返回 null,因此 OP 代码中出现错误。 Cannot set property 'innerHTML' of null

这意味着,您应该只在 window.load 或任何其他类似事件上执行 JS 代码,以确保在尝试执行之前加载 HTML。

现在,对于 cmets 中的另一个问题,如果您像这样重写 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>';

这使代码更具可读性并帮助您更轻松地调试。

【讨论】:

完美!谢谢你:) 很高兴能帮上忙!【参考方案2】:

您的代码中有错字。请将其更改为:

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

【讨论】:

您给我的代码也包含输入错误。我把它放在我的项目中,它给出了错误 我认为问题是双引号和单引号 为什么不在 JS 之外准备选项字符串,只在其中添加一个变量。代码将更具可读性。

以上是关于如何在javascript中插入带有innerHTML的php数组的主要内容,如果未能解决你的问题,请参考以下文章

javascript #javacsript在具有多个段落的正文中插入带有文本的浮动框架

常用javascript dom操作

请问使用javascript DOM如何插入空格?

MailChimp:为啥带有 javascript 的 PUT 方法返回“使用 PUT 插入或更新列表成员”

如何在字段中插入带有字符[']的表(pymssql)

如何使用python在sqlplus中插入带有'&'的值