我正在学习 PHP,并尝试根据复选框选中和取消选中打印一条消息。但是当我尝试选中复选框时,我只得到其他部分。这是 php 代码。让我知道哪里出了问题。
<html>
<body>
<script type="text/javascript">
function on_callPhp()
{
if(this.checked) {
document.write("<?php echo php_func_c();?>");
}
else
{
document.write("<?php echo php_func_uc();?>");
}
}
</script>
<input type="checkbox" name="hit_val" value="hit" onchange="on_callPhp()">
<?php
function php_func_c()
{
echo "CHECKED";
}
function php_func_uc()
{
echo "UNCHECKED";
}
?>
</body>
</html>
最佳答案
一些问题:
名称
on_callPhp
似乎表明您认为 JavaScript 将在该函数中调用 PHP。但事实并非如此。当 PHP 运行时,它会执行php_func_c
和php_func_uc
以生成您想要的字符串。 PHP 完成运行后,页面将在浏览器中呈现。当用户选中该复选框时,不再发生与 PHP 的交互。this
并不引用复选框。您可以将this
作为函数参数传递。不要使用
document.write
,当然也不要在事件处理程序中使用:在后一种情况下,它将完全清除页面内容。使用console.log
代替进行调试。然后,当您准备好时,您可以做一些更有用的事情,例如显示一些其他页面内容。
这里是更正后的代码,尽管我保留了名称 on_callPhp
不变。使用不同的名称:
function on_callPhp(chkbox) // <-- notice the parameter
{
if(chkbox.checked) { // <-- check the argument, not `this`
console.log("<?php echo php_func_c();?>");
}
else
{
console.log("<?php echo php_func_uc();?>");
}
}
onchange
属性可以将 this
传递给函数:
<input type="checkbox" name="hit_val" value="hit" onchange="on_callPhp(this)">
关于javascript - 在 JavaScript 中使用 IF 处理复选框状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53969165/