如何设置javascript变量';将innerHTML转换为php/html文本

如何设置javascript变量';将innerHTML转换为php/html文本,php,javascript,html,escaping,innerhtml,Php,Javascript,Html,Escaping,Innerhtml,我以为我知道如何逃避,但这简直让我大吃一惊。我需要获取以下html/php组合文本: <select name="mainUsers" class="manageSelect"> <?php $users = getAllUsersByUserId($userid); echo'<option value="choose">Select a user...</option>'; while($user = mysql

我以为我知道如何逃避,但这简直让我大吃一惊。我需要获取以下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变量的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>';
?>;
cell2.innerHTML=
;

您需要在echo和正在生成的字符串之间留一个空格

此外,您生成的HTML没有在选项的value属性周围加引号

试试这个:
echo'.$user['fname'].'.$user['lname'].'

您需要在echo和正在生成的字符串之间有一个空格

此外,您生成的HTML没有在选项的value属性周围加引号

试试这个:
echo'.$user['fname'].'.$user['lname'].'

您需要将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>\';';
?>;
cell2.innerHTML=
;

您需要将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>\';';
?>;
cell2.innerHTML=
;

您的报价有问题,它肯定会抛出一个javascript错误。现在,您有如下代码:

cell2.innerHTML = <select>...</select>
cell2.innerHTML=。。。
但应该是这样

cell2.innerHTML = '<select>...</select>'
cell2.innerHTML='…'
因此,在php标记周围加上单引号

cell2.innerHTML = '<?php
//...
?>';
cell2.innerHTML='';
这项工作没有任何转义,因为在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错误。现在,您有如下代码:

cell2.innerHTML = <select>...</select>
cell2.innerHTML=。。。
但应该是这样

cell2.innerHTML = '<select>...</select>'
cell2.innerHTML='…'
因此,在php标记周围加上单引号

cell2.innerHTML = '<?php
//...
?>';
cell2.innerHTML='';
这项工作没有任何转义,因为在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);
?>';

选项标记中的值属性没有被引用当你说
其崩溃时是什么意思
?选项标记中的值属性没有被引用当你说
其崩溃时是什么意思?