javascript - 在 JavaScript 中使用 IF 处理复选框状态

标签 javascript php

我正在学习 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_cphp_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/

相关文章:

javascript - 使用谷歌云消息和服务 worker 的桌面推送通知

php - 如果下一条记录中的 id 不同,如何创建新的 <tr>

javascript - 通过javascript获取文件路径

Javascript 仅显示偶数

javascript - 如何在 Javascript 中动态更新背景图像大小

javascript - 如何在javascript中比较两个变量

javascript - 具有多个请求的 Express.js (Node.js) 中的 ECONNRESET

php - 如何安排电子邮件发送

php - 是否存在 array_search 比连续 array_flip 和直接查找更快的情况?

php - 如何使用php代码向android发送推送通知?