【发布时间】:2018-09-22 21:33:34
【问题描述】:
我有这个为下拉菜单生成链接的循环。
$count = count($this->contents);
for($i = 0; $i < $count; $i++)
{
$this->ret .= "<a onclick='changeFDD(" . strval($this->contents[$i]) . ")'>" . $this->contents[$i] . "</a>";
}
这会产生以下列表
<div id="fddContentID" class="fddContent">
<a onclick="changeFDD(Mr.)">Mr.</a>
<a onclick="changeFDD(Mrs.)">Mrs.</a>
<a onclick="changeFDD(Ms.)">Ms.</a>
</div>
问题是我需要参数是字符串。我想 strval 会完成这个。
当我尝试插入单引号时,它会使结构有点偏离。
带单引号的 PHP
$this->ret .= "<a onclick='changeFDD('" . strval($this->contents[$i]) . "')'>" . $this->contents[$i] . "</a>";
返回的 HTML 结果
<div id="fddContentID" class="fddContent">
<a onclick="changeFDD(" mr.')'="">Mr.</a>
<a onclick="changeFDD(" mrs.')'="">Mrs.</a>
<a onclick="changeFDD(" ms.')'="">Ms.</a>
</div>
我明白为什么结果是这样的,但我不明白如何封装该变量以便 Javascript 正确处理它。
其他更详细的信息
我正在开发一个 PHP 表单构建器,我使用一个按钮和一个 div 创建了一个自定义下拉框,我使用 Javascript 和 CSS 控制它的可见性。在此下拉框中,每个项目都是一个链接。
当你点击链接时,它会运行 Javascript 函数 changeFDD(nVal)
function changeFDD(nVal) {
document.getElementById("fddBtnID").value = nVal;
alert("test");
}
nVal 对应于按钮将具有的新值。
当我生成这个下拉框时,一个遍历数组的方法会显示这些链接,唯一的问题是我在用引号封装变量时遇到了问题,因为该区域已经有很多引号。我尝试了一些函数,如 strval 并将其转换为字符串,但结果保持不变。
这是下拉菜单的布局
<div class="FDDWrap">
<button onclick="fddDrop()" id="fddBtnID" class="fddBtn">Mr.</button>
<div id="fddContentID" class="fddContent">
<a onclick="changeFDD(Mr.)">Mr.</a>
<a onclick="changeFDD(Mrs.)">Mrs.</a>
<a onclick="changeFDD(Ms.)">Ms.</a></div>
</div>
感谢任何和所有的指导或批评。 如果您发现任何可能形成的不良习惯,请不要犹豫,烤我。
【问题讨论】:
-
考虑将
json_encode与htmlentities结合使用。