老师帮忙看下可不可以简化

来源:3-8 编程练习

好好丶学习

2020-03-22 12:08:54

<!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 inp = document.getElementsByTagName("input")[0];

      inp.onfocus = function() {

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

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

      };

      inp.onblur = function() {

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

        if (this.value == "") {

          spa.innerHTML = "用户名不能为空";

          this.className = "red";

        } else {

            this.style.borderColor = "grey";

            spa.innerHTML = "";

        }

      };

    </script>

  </body>

</html>



写回答

1回答

好帮手慕糖

2020-03-22

同学你好,优化以及代码中的其他问题,回答如下:

1、span的获取,直接在事件外获取全局的即可,不需要每个事件中单独获取,例:

http://img.mukewang.com/climg/5e7706b30999edb406410322.jpg

2、如下,输入内容之后,再删除,提示信息是对的,但是边框没有改变。这是因为直接在js中设置样式,是应用到标签中的,优先级比较高,设置的类名的优先级没有标签中的高。显示的是灰色。

http://img.mukewang.com/climg/5e7706ee099057a811640517.jpg

建议:不需要修改边框,有内容的时候,去掉类名即可(设置类名为空),例:

http://img.mukewang.com/climg/5e7707530970034f04550231.jpg

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

0

0 学习 · 40143 问题

查看课程