请老师帮忙来看看,不会取消提示文字和去掉加上的样式了。。。

来源:4-11 编程练习

魏源

2020-10-23 14:06:25

# 具体遇到的问题
DOM 4-11 编程练习

第三步:给输入框绑定失去焦点事件,当输入框获得焦点时,判断:

(1)如果值为空,输入框后出现提示文字“用户名不能为空”,并且将样式表中的边框样式添加给输入框

(2)如果值不为空,输入框后的提示文字消失,之前加上的样式也要去掉

第三步的(2)不会取消提示文字和去掉加上的样式,没做出来
# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果
尝试过的思路在代码中注释了,结果就是页面中当再次点击获得焦点是颜色就不对了,红色框被覆盖住了
# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <style type="text/css">

        .red{

            border:1px solid red;

        }

    </style>

</head>

<body>

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

    <script type="text/javascript">

        // 补充代码

        var oIp = document.getElementsByTagName('input')[0];

            oSpan = document.getElementsByTagName('span')[0];

            oIp.onfocus = function(){

                if(oIp = []) oSpan.innerHTML = '请输入您的姓名';

            };

            oIp.onblur = function(){

                if(oIp = []){

                    oSpan.innerHTML = '用户名不能为空';

                    this.className='red';

                }else{

                //添加代码

                    //自己尝试过的解决思路1:

                    // oSpan.innerHTML = '';

                    // this.className='';

                    //自己尝试过的解决思路2:

                    //if(oIp.minLength >= 1) oSpan = [];



                }

            };

    </script>

</body>

</html>


写回答

1回答

好帮手慕慕子

2020-10-23

同学你好,需要先了解一些知识

  1. 一个等号(=)表示赋值,两个等号(==)才表示判断是否相等,所以代码中需要判断相是否等时,使用==

  2. 可以使用value属性获取输入框输入的值,值的类型是字符串,所以没有输入任何内容时,获取的值是空字符串。

具体要修改地方的可以结合代码中的注释理解

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style type="text/css">
    .red {
      border: 1px solid red;
    }
  </style>
</head>

<body>
  姓名:<input type="text" class=""> <span></span>
  <script type="text/javascript">
    // 补充代码
    var oIp = document.getElementsByTagName('input')[0];
    oSpan = document.getElementsByTagName('span')[0];
    oIp.onfocus = function () {
      // =表示赋值,判断是否相等应该使用==
      // if (oIp = [])oSpan.innerHTML = '请输入您的姓名';
      // 判断数据框的value值是否为空字符串,而不是对输入框这个元素进行判断
      if (oIp.value == "") {
          oSpan.innerHTML = '请输入您的姓名';
          // 聚焦的时候设置类名为空,去掉红色边框
          this.className = ""
      }
    };
    oIp.onblur = function () {
      // 与前面的一样,使用==符号对输入框的value值进行判断
      // if (oIp = []) {
      if (oIp.value == "") {
        oSpan.innerHTML = '用户名不能为空';
        this.className = 'red';
      } else {
        // 输入姓名之后,修改提示信息内容,并设置类名为空,去掉红色边框
        oSpan.innerHTML = "";
        this.className = ""
        //添加代码
        //自己尝试过的解决思路1:
        // oSpan.innerHTML = '';
        // this.className='';
        //自己尝试过的解决思路2:
        //if(oIp.minLength >= 1) oSpan = [];
      }
    };
  </script>
</body>

</html>


祝学习愉快~

0

0 学习 · 15276 问题

查看课程