上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: player - 

多个内部函数如何根据选泽执行?

[复制链接]
  • TA的每日心情
    无聊
    2023-11-24 10:55
  • 签到天数: 61 天

    [LV.6]常住居民II

    14

    主题

    30

    回帖

    113

    积分

    中级工程师

    积分
    113
    发表于 2022-2-20 21:32:23 | 显示全部楼层 | 阅读模式
    悬赏1油猫币未解决
    <!DOCTYPE html>
    <html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>

    <body>
        <div id="test">
            <span>
                <button onclick="test()">按钮</button>
            </span>
            <span>
                <input type="checkbox" name="count" value="jia" />
                <input type="checkbox" name="count" value="jian" />
                <input type="checkbox" name="count" value="cheng" />
                <input type="checkbox" name="count" value="chu" />
            </span>
        </div>
    </body>
    <script>

        function test() {
            const count = document.getElementsByName("count");

            let fun = countTest();

            for (let c of count) {

                if (c.value == "jia" && c.checked == true) {
                    alert("我选择了:" + c.value);

                    fun();
                }

                if (c.value == "jian" && c.checked == true) {
                    alert("我选择了:" + c.value);


                }

            }
        }

        function countTest() {

            let i = 1;

            return function jia() {

                let a = i + 1;
                console.log(a);

            }

            // let jia = () => {
            //     let a = i + 1;
            //     console.log(a);

            // }

            return function jian() {

                let b = i - 1;
                console.log(b);

            }

            function cheng() {

                let c = i * 1;
                console.log(c);

            }

            function chu() {

                let d = i / 1;
                console.log(d);

            }

        }


    </script>

    </html>




    如上面例子,我想根据复选框的选择来执行countTest函数里面对应的内部函数,该如何实现?


  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-2-20 21:53:25 | 显示全部楼层
    <!DOCTYPE html>
    <html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>

    <body>
        <div id="test">
            <span>
                <button onclick="test()">按钮</button>
            </span>
            <span>
                <input type="checkbox" name="count" value="jia" />加
                <input type="checkbox" name="count" value="jian" />减
                <input type="checkbox" name="count" value="cheng" />乘
                <input type="checkbox" name="count" value="chu" />除
            </span>
        </div>
    </body>
    <script>
        let i = 1;
        function jia() {
            let a = i + 1;
            console.log(a);

        }
        function jian() {

            let b = i - 1;
            console.log(b);

        }
        function cheng() {

            let c = i * 1;
            console.log(c);

        }
        function chu() {

            let d = i / 1;
            console.log(d);
        }
        function test() {
            const count = document.getElementsByName("count");
            for (let c of count) {

                if ( c.checked == true) {
                    window[c.value]()

                }

            }
        }
    </script>

    </html>
    这样可以吗
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-2-20 22:01:24 | 显示全部楼层
    我好像懂你意思了...你是之前那个用对象封装函数的吗
    如果那样的话,那么用没有任何问题!
    我之前理解错了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2023-11-24 10:55
  • 签到天数: 61 天

    [LV.6]常住居民II

    14

    主题

    30

    回帖

    113

    积分

    中级工程师

    积分
    113
    发表于 2022-2-20 22:26:55 来自手机  | 显示全部楼层
    李恒道 发表于 2022-2-20 22:01
    我好像懂你意思了...你是之前那个用对象封装函数的吗
    如果那样的话,那么用没有任何问题!
    我之前理解错了 ...

    有闭包的写法吗,我想实现类似与Java类.方法的写法,不暴露 jia jian这些函数
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2022-2-20 22:48:59 | 显示全部楼层
    js也有类的:
    1. class Test {
    2.     constructor() {
    3.         this.i = 1;
    4.     }
    5.     jia() {
    6.         this.i += 1;
    7.         console.log(this.i);
    8.     }
    9.     jian() {
    10.         this.i -= 1;
    11.         console.log(this.i);
    12.     }
    13.     //...
    14. }
    15. const countTest = new Test();
    16. countTest.jia();
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-2-21 09:33:51 | 显示全部楼层
    player 发表于 2022-2-20 22:26
    有闭包的写法吗,我想实现类似与Java类.方法的写法,不暴露 jia jian这些函数 ...

    用cxxjackie哥哥的类感觉就可以
    也可以往函数的property上写一下函数
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表