封装函数时遇到的问题,希望老师耐心解答。

封装函数时遇到的问题,希望老师耐心解答。

        // 封装getElementById
        function getId(elem){
          if(typeof(elem)==="string") return document.getElementById(elem);
        }
        // check函数用于鉴定输入的值是否合法
        var pattern=/^[\u4e00-\u9fa5]{2,16}$/;
        function check(str,pat){
        if(pat.test(str)) 
        {return  "OK"}
        else{return "用户名不合法"}
        }
        // 将username绑定onblur事件
        username.onblur=function(){
            getId("check_"+"username").innerHTML=check(getId("username").value,pattern)
        }

未封装onblur事件时,代码运行正常。

现将username.onblur事件封装入fn函数,代码如下:

        //将onblur事件封装成一个函数
        function fn(id){
            id.onblur=function(){
                getId("check_"+"id").innerHTML=check(getId("id").value,pattern)
            }
        };
        fn(username);

此时代码运行出错,控制台提示 Uncaught TypeError: Cannot read property 'value' of null,希望老师耐心解答,多谢!

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好, 从你粘贴的这部分代码看,fn函数中id属于变量,不能添加引号, 建议修改:

http://img1.sycdn.imooc.com//climg/5e04101b09101f4910840407.jpg

如果还有问题,建议:可以将你写的完整代码粘贴过来,便于老师帮助同学准确的定位与解决问题。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

提问者 慕姐0416137 2019-12-25 19:06:07

我懂了,fn()里面要传一个字符串而不是username变量,改成fn("username")就可以顺利运行了。

  • 提问者 慕姐0416137 #1
    不对,刷新后还是不行,请求老师解答
    2019-12-25 19:08:26
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师