V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhve2x4
V2EX  ›  问与答

请教大拿一个 JS 问题,为什么不能直接用.submit()方法?

  •  
  •   zhve2x4 · 2020-04-13 09:06:31 +08:00 · 1251 次点击
    这是一个创建于 1721 天前的主题,其中的信息可能已经有所发展或是发生改变。
    function submitForm(){
        let form = document.getElementById("autoForm");
        form.submit();
    }
    
    window.onload = function () {
        let selE = document.createElement("select");
        selE.name = "selectedCmd";
    
        let lis = ["aaa","bbb"];
        for (let i=0;i<lis.length;i++) {
            let op = new Option(lis[i],lis[i]);
            selE.options.add(op);
        }
    
        let formE = document.createElement("form");
        formE.id = "autoForm";
        formE.action = "/ax";
        formE.method = "GET";
    
        formE.appendChild(selE);
     // selE.onchange = formE.submit;  //*** 不行,执行报错
        selE.onchange = submitForm;    //这样才行
    
        let divF = document.getElementById("divF");
        divF.appendChild(formE);
    }
    
    4 条回复    2020-04-13 16:03:01 +08:00
    9yu
        1
    9yu  
       2020-04-13 09:08:03 +08:00   ❤️ 1
    ```js
    selE.onchange = () => { form = document.getElementById("autoForm").submit() }
    ```
    otakustay
        2
    otakustay  
       2020-04-13 09:08:17 +08:00   ❤️ 2
    因为 submit 需要 this
    ismumu
        3
    ismumu  
       2020-04-13 09:44:10 +08:00   ❤️ 1
    selE.onchange = () => {
    formE.submit();
    }
    zhve2x4
        4
    zhve2x4  
    OP
       2020-04-13 16:03:01 +08:00
    @ismumu 这个测试了,确实可以用,也很简洁
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2812 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:43 · PVG 22:43 · LAX 06:43 · JFK 09:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.