请老师帮忙看下哪里错了

请老师帮忙看下哪里错了

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>onblur和onfocus</title>

    <style type="text/css">

        .red{

     border:1px solid red;

     }

    </style>

</head>

<body>

姓名:<input type="text"> <span></span>

<script type="text/javascript">

   var name=document.getElementsByTagName("input")[0];

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

   name.onfocus=function(){

       var val=this.value;

       if(val.length==0){

          tip.innerHTML="请输入您的姓名";

       }

   }

   name.onblur=function(){

       if(val.length==0){

           tip.innerHTML="姓名不能为空";

           this.className="red"

       }

   }

</script>

</body>

</html>


正在回答

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

3回答

你好同学,是因为你修改的代码中,失去焦点的事件少了一个结尾的花括号导致报错,所以代码没有办法运行,自然怎么改都没有效果。另外,老师在给出的截图中,onblur事件里面的else中,是清空提示文字内容,而不是清空input的红色边框。

老师把修改好的代码粘贴给你,同学再细心改一下哦。

<!DOCTYPE html>

<html>


<head>

    <meta charset="UTF-8">

    <title>onblur和onfocus</title>

    <style type="text/css">

    .red {

        border: 1px solid red;

    }

    </style>

</head>


<body> 姓名:<input type="text"> <span></span>

    <script type="text/javascript">

    var names = document.getElementsByTagName("input")[0];

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

    names.onfocus = function() {

        var val = this.value;

        if (val.length == 0) {

            tip.innerHTML = "请输入您的姓名";

            this.className = ""

        } else { 

            tip.innerHTML = "" 

        }

    };

    names.onblur = function() {

            var val = this.value

            if (val.length == 0) {

                tip.innerHTML = "姓名不能为空";

                this.className = "red";

            } else {

             //这里不用清空边框,因为获取焦点的时候已经清空,如果不执行if判断,红色边框是没有的

             // this.className = ""

             // 清空提示文字

             tip.innerHTML = "" ;

         }

    // 如下加上结尾的括号

    }


    </script>

</body>


</html>

祝学习愉快,望采纳。

  • Elisa呀 提问者 #1
    好的,谢谢老师
    2019-08-12 00:23:17
好帮手慕夭夭 2019-08-09 11:32:38

"wangxq0614'同学真是聪明,指出了代码中的错误和修改方案。不过还需要注意是,再获取焦点的时候需要把红色边框清除一下,否则失去焦点之后再次获取焦点,红色边框与蓝色边框会重叠:

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

另外,要考虑输入内容之后,获取焦点就不用在显示文字提示了。代码整体修改如下:

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

祝学习愉快,望采纳。

  • 提问者 Elisa呀 #1
    老师我向您这样写,输入名字之后,后边的提示文字还是不消失的呀。我修改了一下,但是,也不是想要的效果,您在帮忙看下,辛苦 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>onblur和onfocus</title> <style type="text/css"> .red{ border:1px solid red; } </style> </head> <body> 姓名:<input type="text"> <span></span> <script type="text/javascript"> var names=document.getElementsByTagName("input")[0]; var tip=document.getElementsByTagName("span")[0]; names.onfocus=function(){ var val=this.value; if(val.length==0){ tip.innerHTML="请输入您的姓名"; this.className="" } else{tip.innerHTML=""} }; names.onblur=function(){ var val=this.value if(val.length==0){ tip.innerHTML="姓名不能为空"; this.className="red"; } else{this.className=""} } </script> </body> </html>
    2019-08-10 00:36:30
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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