V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
he2020
V2EX  ›  JavaScript

一个用原生 JavaScript 实现的登录注册功能,求教下面这行代码做了什么事情?

  •  
  •   he2020 · 2021-06-09 13:27:41 +08:00 · 2253 次点击
    这是一个创建于 1299 天前的主题,其中的信息可能已经有所发展或是发生改变。
    注释掉 login.js 文件下的该行代码,貌似对项目运行也完全没有影响。
    https://github.com/user65536/userManager/blob/master/login/login.js#L19
    
    另外,在 render.js 文件中,
    if(type && type !== 'defalut'){}
    
    其中 type !== 'defalut'的作用是什么?
    
    项目预览地址: https://user65536.github.io/userManager/login/login.html
    
    8 条回复    2021-06-10 11:47:49 +08:00
    66beta
        1
    66beta  
       2021-06-09 13:42:33 +08:00   ❤️ 1
    ```js
    Render.prototype.byTarget = function (target, type, msg) {
    var root = utils.getParent(target, 2);
    if(type && type !== 'defalut') {
    root.classList.add('with-' + type);
    root.getElementsByClassName('help-block')[0].innerText = msg;
    } else {
    root.classList.remove('with-error', 'with-success');
    root.getElementsByClassName('help-block')[0].innerText = '';
    }
    }
    ```
    表单验证的样式与错误提示

    19 行 20 行是重置表单验证样式
    7gugu
        2
    7gugu  
       2021-06-09 13:49:15 +08:00   ❤️ 1
    第二段代码的意思是,如果有传入 type 类型,并且 type 类型不是 default 的话(源代码拼错单词了),就给 target 加上 type 样式(具体表示是 class="with-xxx")。
    he2020
        3
    he2020  
    OP
       2021-06-09 14:52:19 +08:00
    @7gugu 搜遍了整个项目都没有发现有传入 type 类型为 default 的情况,所以疑惑这里要判断 type 类型是否为 default 会不会有点多余
    no1xsyzy
        4
    no1xsyzy  
       2021-06-09 15:01:36 +08:00   ❤️ 1
    @he2020 看上去根本没传过,可能是抄的,又没有 ^C^V
    不过我尝试搜索全 Github 的时候触发 Rate limit 了(
    he2020
        5
    he2020  
    OP
       2021-06-09 15:03:17 +08:00
    @66beta 感谢,理解了很多,但把重置表单验证样式放在 sumit 事件上会不会有点多余。因为作者在 login.js 文件中还监听了 input 事件,一旦用户在表单中修改了信息,表单中的 value 值发生变化,同样会调用 render.byTarget(target)清楚之前的错误提示。
    he2020
        6
    he2020  
    OP
       2021-06-09 15:05:58 +08:00
    @66beta 清楚 -> 清除。
    这也解释了为什么注释掉该行代码,对运行效果也完全没有影响的原因。
    jrtzxh020
        7
    jrtzxh020  
       2021-06-10 11:22:48 +08:00   ❤️ 1
    type !== 'defalut'意思重置样式。传入这个参数 删除 with-error', 'with-success'类。还原 form.css 45 行到 54 行的.defalutl 类的样式啊
    he2020
        8
    he2020  
    OP
       2021-06-10 11:47:49 +08:00
    @jrtzxh020 问题的关键是整个项目中貌似都没有传入 type 类型为 default 的情况,所以这里的判断显得有点多余(
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2677 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:47 · PVG 15:47 · LAX 23:47 · JFK 02:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.