如何将 javascript var 的 innerHTML 设置为 php/html 文本
Posted
技术标签:
【中文标题】如何将 javascript var 的 innerHTML 设置为 php/html 文本【英文标题】:How to set javascript var's innerHTML to php/html text 【发布时间】:2012-07-01 14:01:11 【问题描述】:我以为我知道如何逃避事情,但这只是让我大吃一惊。我需要使用这个 html/php 组合文本:
<select name="mainUsers" class="manageSelect">
<?php
$users = getAllUsersByUserId($userid);
echo'<option value="choose">Select a user...</option>';
while($user = mysql_fetch_array($users))
echo'<option value='.$user['fname'].' '.$user['lname'].'>'.$user['fname'].' '.$user['lname'].'</option>';
?>
</select>;
并将其设置为 javascript var 的 innerHTML。它崩溃了,因为我的转义语法不正确。
编辑:抱歉不清楚。这不起作用,我不知道为什么:
cell2.innerHTML =
<?php
echo '<select name="mainUsers" class="manageSelect">';
$families = getAllFamiliesByUserId($userid);
echo '<div id="famSelect"><option value="choose">Select a family...</option></div>';
while($family = mysql_fetch_array($families))
echo '<div id="famSelect"><option value="'.$family['name'].'">'.$family['name'].'</option></div>';
echo '</select>';
?>;
【问题讨论】:
选项标签中的值属性没有被引用 你说Its crashing
是什么意思?
【参考方案1】:
您需要将 innerHTML 设置为包含 HTML 的字符串。在 JavaScript 中,您需要用引号分隔该字符串,因此:
cell2.innerHTML =
<?php
echo '\'<select name="mainUsers" class="manageSelect">';
$families = getAllFamiliesByUserId($userid);
echo '<div id="famSelect"><option value="choose">Select a family...</option></div>';
while($family = mysql_fetch_array($families))
echo '<div id="famSelect"><option value="'.$family['name'].'">'.$family['name'].'</option></div>';
echo '</select>\';';
?>;
【讨论】:
【参考方案2】:echo 和正在生成的字符串之间需要有一个空格。
此外,您生成的 HTML 并未在选项的 value 属性周围加上引号。
试试这个:
echo '<option value="'.$user['fname'].' '.$user['lname'].'">'.$user['fname'].' '.$user['lname'].'</option>';
【讨论】:
【参考方案3】:您的引用存在问题,它肯定会引发 javascript 错误。现在你有这样的代码:
cell2.innerHTML = <select>...</select>
但应该是的
cell2.innerHTML = '<select>...</select>'
所以在你的php标签周围加上单引号
cell2.innerHTML = '<?php
//...
?>';
而且这项工作没有任何转义,因为您没有在 html 代码中使用任何单引号。但转义很简单:只需将所有单引号替换为 \'。像这样: cell2.innerHTML = '
<?php
$html = '<select name="mainUsers" class="manageSelect">';
$families = getAllFamiliesByUserId($userid);
$html .= '<div id="famSelect"><option value="choose">Select a family...</option></div>';
while($family = mysql_fetch_array($families))
$html .= '<div id="famSelect"><option value="'.$family['name'].'">'.$family['name'].'</option></div>';
$html .= '</select>';
echo addslashes($html);
// Addslashes also slahses double quotes("). If this is causing problems try: echo str_replace("'", "\\'", $html);
?>';
【讨论】:
以上是关于如何将 javascript var 的 innerHTML 设置为 php/html 文本的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 javascript var 引用 Mongodb 集合字段
如何在 Firefox 中从 JavaScript 解析 HTML?
如何在进行测试脚本录制时重新启动应用程序 inn squish