我正在尝试从多个DIV中的OnClick调用js函数,它传递一个'Section Name'condOther001,002,003等......'。
<?php
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$TaskID=sprintf("%03d",mysql_result($result,$i,"TaskID"));
$secOthersID = "SecOther$TaskID";
echo "
<div class='clTaskSection' onclick='SecOtherVisibility($secOthersID)'>...</div>
<div id='$secOthersID' class='clTaskSection'>content...</div>";
$i++;
}
?>
然后它应该调用下面的js,提供相关的部分名称:
<script>
function SecOtherVisibility(divName) {
if (document.getElementById(divName).style.display = "none") {
document.getElementById(divName).style.display = "block"
} else {
document.getElementById(divName).style.display = "none";
}
}
</script>
但我得Uncaught TypeError: Cannot read property 'style' of null
。我哪里错了?
答案 0 :(得分:1)
该函数需要一个字符串divName
。您传递的变量$secOthersID
未定义。你的HTML必须是这样的:
<div class='clTaskSection' id="cats" onclick='SecOtherVisibility("cats")'>Contents of div...</div>
答案 1 :(得分:1)
将其更改为:
<div class='clTaskSection' onclick='SecOtherVisibility(<?= $secOthersID ?>)'>...</div>
除非在PHP上下文中,否则您不能只使用PHP变量。
答案 2 :(得分:1)
更重要的是,查看渲染结果:
... onclick='SecOtherVisibility(SecOther001)' ...
你看到了问题吗?
现在怎么样:
... onclick='SecOtherVisibility(<?=json_encode($secOthersID)?>)' ...
输出:
... onclick='SecOtherVisibility("SecOther001")' ...
我希望能够解决问题!