我一直在努力解决我在javascript中创建下拉菜单的问题,但是使用PHP数据。我知道你不能在javascript中“运行”PHP,但无法解决我的问题。我的目标是能够动态地向表单添加更多项目。我没有下拉菜单就可以正常工作,所以下面是我认为需要的所有代码。这就是我的开始,我尝试过多次修复,没有任何运气。
感谢您的投入!
newdiv.innerHTML = "<div style=\"float:left; width:200px;\"><select name=\"Room_Type\" style=\"width:200px;\" tabindex=\""+counter+"\">";
newdiv.innerHTML .= "<option value=\"\" selected=\"selected\">Select one</option>";
<?php
if ($Total_Rows != 0) {
$Run_Cnt = 0;
while ($Run_Cnt < $Total_Rows): ?>
newdiv.innerHTML .= "<option value=\""+<?=$Room_Type_List[$Run_Cnt]['ID']; ?>+"\">"+<?= stripslashes($Room_Type_List[$Run_Cnt]['Type_Name']); ?>+"</option>";<?php
$Run_Cnt++;
endwhile;
} ?>
newdiv.innerHTML .= "</select></div>";
答案 0 :(得分:1)
永远不要将数据直接连接到脚本中。必须妥善转义才能正常工作。 stripslashes()
还不够。在您的代码中,您将数据从PHP输出到JavaScript,然后在JavaScript中输出到HTML。这只会导致头痛。
在您的情况下,我认为您最好将房间类型数据发送到JavaScript,然后在JavaScript客户端汇总您的元素。
<script>
// Use JSON-encoding, which is compatible with JavaScript
var roomTypes = <?php echo json_encode($Room_Type_List); ?>;
// Now, all of your room data is available to use directly within JavaScript
console.log(roomTypes);
// Build your HTML here
</script>
现在,在构建HTML时,请务必设置属性和文本。 从不以HTML格式连接数据,除非该数据实际上是HTML。使用el.setAttribute()
和el.textContent()
。文本可能很棘手,所以我通常只使用jQuery的.text()
。