我旁边有一组复选框和文本框。如果我检查它,我只想要出现文本框。我的ID是动态使用PHP所以我不能使用循环中的JavaScript。
下面的代码是测试它是否可以隐藏。我可以隐藏点击,但我希望反过来做。
while($row = mysql_fetch_array($result)){
echo "<tr>";
echo "<td><input name='CBox $TBCounter' type=\"checkbox\" value=\"{$row['type']}\" onclick=\"document.getElementById('TBox $TBCounter').style.visibility='hidden';\"/></td>";
echo "<td>" . $row['type'] . "</td>
<td><input type=\"text\" name=\"mytext\" id=\"TBox $TBCounter\"></td><br />
</tr>";
$TBCounter++;
}
答案 0 :(得分:1)
您可以使用Javascript&#39; window.onload
在每次加载页面时生成一些内容。
在你的循环之前......
$elementsToHide = array();
在你的循环中,把这个
$elementsToHide[] = $TBCounter;
然后让你的脚本(在循环之后)看起来像这样
<script type="text/javascript">
window.onload = function ()
{
<?php foreach ($elementsToHide AS $TBCounter): ?>
document.getElementById('TBox <?php echo $TBCounter ?>').style.visibility = 'hidden';
<?php endforeach ?>
}
</script>
答案 1 :(得分:1)
可能有更好的(读取:更少侵入性)方式,但最简单的方法可能是将元素的可见性设置为隐藏,并更改您的Javascript以使其可见。
因此,将style="visibility:hidden;"
添加到文本框元素并更改javascript以设置.style.visibility = 'visible'
编辑您的代码,即:
while($row = mysql_fetch_array($result)){
echo "<tr>";
echo "<td><input name='CBox $TBCounter' type=\"checkbox\" value=\"{$row['type']}\" onclick=\"document.getElementById('TBox $TBCounter').style.visibility='visible';\"/></td>";
echo "<td>" . $row['type'] . "</td>
<td><input type=\"text\" name=\"mytext\" id=\"TBox $TBCounter\" style=\"visibility:hidden\"></td><br />
</tr>";
$TBCounter++;
}
根据Joe的评论,对于禁用javascript的用户,如果页面加载时隐藏了该字段,则不起作用。解决此问题的一种方法是通过输出内联脚本标记在javascript中设置字段不可见。
while($row = mysql_fetch_array($result)){
echo "<tr>";
echo "<td><input name='CBox $TBCounter' type=\"checkbox\" value=\"{$row['type']}\" onclick=\"document.getElementById('TBox $TBCounter').style.visibility='visible';\"/></td>";
echo "<td>" . $row['type'] . "</td>
<td><input type=\"text\" name=\"mytext\" id=\"TBox $TBCounter\"></td><br />
</tr>
<script>document.getElementById('TBox $TBCounter').style.visibility='hidden';</script>";
$TBCounter++;
}
第三种(更好)替代方案可以是为文本框设置一个类,并使用javascript在页面加载时隐藏该类的所有元素。