当键入不包含“ @”的文本(它是电子邮件检查器)时,我试图将文本框的边框设为红色。不幸的是,这不会发生。

我尝试使用包含新边框颜色的类,但不幸的是,似乎从未应用过此更改。

这是html和js代码:

<!DOCTYPE html>
<html>

<head>
<title>
    Sign Up Page
</title>
<link rel="stylesheet" href="style.css" media="screen"/>
</head>

<body>

<script>
    function validateForm() {

            var x = document.forms["myForm"]["fname"].value;
            if (x == "") {
            alert("something must be filled out");
            return false;
            }
            else if (!(x.includes("@")))
           {
             alert("you must have to filled value with @");

 document.getElementById("nameT").style.color="red";

 document.getElementById("fname").className = 'error';
             return false;
           }
          }
 </script>

 <div class="ocean">
       <div class="wave"></div>
       <div class="wave"></div>
       </div>
       <h1>
          <center>
             Whale
          </center>
       </h1>
       <div class="loginbox">

         <h2>
           Login
         </h2>
         <form name="myForm" onsubmit="return validateForm()"
         method="post">
             <p id="nameT"> email </p>
             <input type="text" name="fname" placeholder="enter
   email" onblur="validateForm()">
              <p name="passT"> password </p>
              <input type="text" name="name" placeholder="enter
   password">
              <br>
              <input type="submit" value="Submit">
              <br>
              <a href="#">
                 Lost your password?
              </a>
              <br>
              <a href="#">
                 Create an account
              </a>
          </form>
        </div>
    </body>

  </html>


这是css代码:

 html, body { height: 100%; }
 body {
   background:radial-gradient(ellipse at center, rgba(255,254,234,1)
 0%, rgba(255,254,234,1) 35%, #ffffff 100%);
  overflow: hidden;
 }

.ocean {
  height: 5%;
 width:100%;
 position:absolute;
  bottom:0;
 left:0;
 background: #ffffff;
 }

 .wave {
  background: url(https://s3-us-west-
  2.amazonaws.com/s.cdpn.io/85486/wave.svg) repeat-x;
  position: absolute;
  top: -198px;
  width: 6400px;
  height: 198px;
  animation: wave 7s cubic-bezier( 0.36, 0.45, 0.63, 0.53)
 infinite;
  transform: translate3d(0, 0, 0);
  }

.wave:nth-of-type(2) {
 top: -175px;
  animation: wave 7s cubic-bezier( 0.36, 0.45, 0.63, 0.53) -.125s
  infinite, swell 7s ease -1.25s infinite;
  opacity: 1;
  }

  @keyframes wave {
  0% {
   margin-left: 0;
   }
   100% {
    margin-left: -1600px;
    }
    }

  @keyframes swell {
   0%, 100% {
   transform: translate3d(0,-25px,0);
   }
   50% {
    transform: translate3d(0,5px,0);
   }
  }

  .loginbox
 {
  width: 340px;
  height: 360px;
  background: #000;
  color: #fff;
  top: 50%;
  left:50%;
  position: absolute;
  transform: translate(-50%, -50%);
  box-sizing: border-box;
  }
 h2
{
  margin: 0;
  padding: 0 0 20px;
  text-align: center;
  font-size: 22px;
}



 .loginbox input
{
 width: 100%;
 margin-bottom: 20px;
}

.loginbox input[type="text"], input[type="password"]
{
 border: none;

 border-bottom: 1px solid #fff;
 background: transparent;
 outline: none;
 height: 40px;
 color: #fff;
 font-size: 16px;
 }

 .loginbox input[type="submit"]
 {
 border: none;
 outline: none;
 height: 48px;
 background: #fb2525;
 color: #fff;
 font-size: 18px;
 border-radius: 20px;
 }

 .loginbox input[type="submit"]:hover
 {
  cursor: pointer;
  background: #ffc107;
  color: #000;
 }

 .loginbox a
 {
  text-decoration: none;
  font-size: 12px;
  line-height: 20px;
  color: darkgrey;
 }

 .loginbox p
 {
   margin: 0;
   padding: 10px;
   font-weight: bold;
  }
  .loginbox a:hover
  {
    color: #ffc107;
  }
    .error{
     border:2px solid red;
     }


如果未在电子邮件文本框中键入“ @”符号,则预期的输出是边框变为红色。实际结果没有这种效果,而是出现“无法将属性'className'设置为null”的错误。

最佳答案

您正在使用document.getElementById("fname"),但是没有名称为id的任何"fname",因此将输入更新为

<input type="text" id="fname" name="fname" placeholder="enter
   email" onblur="validateForm()">


getElementById更改为

document.getElementById("fname").classList.add('error');


并将您的.error类更改为

.error{
    border-bottom:2px solid red !important;
}

10-08 05:01