老师,麻烦帮忙检查下,注释里有点疑问

老师,麻烦帮忙检查下,注释里有点疑问

<!DOCTYPE html>

<html>

<head lang="en">

    <meta charset="UTF-8">

    <title>onblur和onfocus</title>

    <style type="text/css">

        .red{

            border:1px solid red;

        }

        span{

            display: none;

            /* 隐藏文字 */

        }

    </style>

   

</head>

<body>

    姓名:<input type="text"> <span>请输入您的姓名</span>

    <script type="text/javascript">

        // 获取文本框 和提示文字

        var zxc=document.getElementsByTagName("input")[0],

            jkop=document.getElementsByTagName("span")[0];

           

            // 让提示文字获得焦点时显现出来

            zxc.onfocus=function(){

                jkop.style.display="block"

                jkop.innerHTML="请输入您的姓名"

             }

           

            //当文本框失去焦点时

            zxc.onblur=function(){

               

                var zxcjkop=this.value;

               

                // 让其失去焦点时选项框变红以及隐藏提示文本

                if(this.value.length==0){//老师这里有点小疑问,我原来if判定里写的是zxcjkop!=null 可这样在文本框中输入值后 并不能去掉框变红色和提示文本 这是为啥

                    jkop.style.display="block";

                    jkop.innerHTML="用户名不能为空"

                    this.className="red";

                }else if(zxcjkop!="string"){

                   

                    this.className="black";

                    jkop.style.display="none";

                }

                console.log(this.value)

            }

    </script>

</body>

</html>


正在回答 回答被采纳积分+1

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

1回答
好帮手慕然然 2022-01-10 15:48:40

同学你好,代码存在以下几点问题:

1、当输入框获得焦点时:如果输入框内容不为空,此时也会提示“请输入您的姓名”,如图

https://img1.sycdn.imooc.com//climg/61dbdf4909d14ab503770116.jpg

建议:添加判断条件,判断输入框内容是否为空,为空时,才会显示提示语,参考如下:

https://img1.sycdn.imooc.com//climg/61dbdf0f09a7517213200325.jpg

2、当文本框失去焦点时:判断条件 zxcjkop != "string" 表示判断输入框内容是否为“string”,老师不知道同学写这句代码的用意,不过用户输入的内容我们无法预测,我们只需判断用户是否有输入内容即可,所以这个判断条件多余,建议删除,如下

https://img1.sycdn.imooc.com//climg/61dbdf190937fc0408450665.jpg

问题解答:

这里判断用户输入内容是否为空时,不建议使用null来比较,因为null表示一个空对象引用(比如: 如果变量不指向任何一个内存地址, 则返回null),不管输入框中是否有内容(没有内容就是空字符串),都不会等于null,所以与null进行 != 比较,结果都会为true,如图

https://img1.sycdn.imooc.com//climg/61dbe2040979302413720771.jpg

https://img1.sycdn.imooc.com//climg/61dbe27f09f581c113150723.jpg

祝学习愉快!

  • 提问者 豆包侠 #1

    老师 我这里之所以会写null 和 string 是因为对这个value里的值得数据类型感到疑惑 我想着中文算字符串 所以就写string

    2022-01-10 16:04:57
  • 提问者 豆包侠 #2

    <!DOCTYPE html>

    <html>

    <head lang="en">

        <meta charset="UTF-8">

        <title>onblur和onfocus</title>

        <style type="text/css">

            .red{

                border:1px solid red;

            }

            span{

                display: none;

                /* 隐藏文字 */

            }

        </style>

       

    </head>

    <body>

        姓名:<input type="text"> <span>请输入您的姓名</span>

        <script type="text/javascript">

            // 获取文本框 和提示文字

            var zxc=document.getElementsByTagName("input")[0],

                jkop=document.getElementsByTagName("span")[0];

               

                // 让提示文字获得焦点时显现出来

                zxc.onfocus=function(){

                    if(this.value.length==0){

                    jkop.style.display="inline-block"

                    jkop.innerHTML="请输入您的姓名"

                }

                 }

               

                //当文本框失去焦点时

                zxc.onblur=function(){

                   

                    var zxcjkop=this.value;

                   

                    // 让其失去焦点时选项框变红以及隐藏提示文本

                    if(this.value.length==0){

                        jkop.style.display="inline-block";

                        jkop.innerHTML="用户名不能为空"

                        this.className="red";

                    }else {

                       

                        this.className="black";

                        jkop.style.display="none";

                    }

                   

                }

        </script>

    </body>

    </html>

    老师 帮我检查检查 看看改的对不对了 

    2022-01-10 16:16:29
  • 好帮手慕然然 回复 提问者 豆包侠 #3

    同学你好,代码修改的很正确,没问题了。关于value里的值的数据类型,一般都是字符串类型(不管输入的是英文,中文,还是数字),可以使用typeof测试一下,如图https://img1.sycdn.imooc.com//climg/61dbeea909670a9313430734.jpg

    祝学习愉快!

    2022-01-10 16:32:16
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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