我怎样才能让innerHtml 只写一次错误?

Posted

技术标签:

【中文标题】我怎样才能让innerHtml 只写一次错误?【英文标题】:How can i make innerHtml writes error only once? 【发布时间】:2020-11-28 04:27:26 【问题描述】:

我有一个问题,我在 javascript 中进行了表单验证,经过所有验证检查后,我输入了innerhtml += "actually error message",问题是我点击提交按钮多少次它会写出消息。有人可以帮我解决这个问题吗?或者使这个更优雅或更好的逻辑。我是初学者。

function regvalidate() 

  var errortable = document.getElementById('log');

  var x = document.forms["regform"]["username"].value;
  var y = document.forms["regform"]["email"].value;
  var z = document.forms["regform"]["pass1"].value;
  var b = document.forms["regform"]["pass2"].value;

  if (x == "" || y == "" || z == "" || b == "") 
    errortable.innerHTML = 'Cant be empty field';
    return false;
  

  var regexEmail = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
  var email = document.getElementById("email");

  if (regexEmail.test(email.value))  else 
    errortable.innerHTML += 'Invaild email address';
    return false;

  

  password1 = regform.pass1.value;
  password2 = regform.pass2.value;

  if (password1 != password2) 
    errortable.innerHTML += 'Two pass dosent match';
    return false;

  
<div id="log"></div>
<form id="regform" class="form-signin" action="#" method="post">

  <input type="text" id="username" class="form-control" placeholder="username" name="username">

  <input type="email" id="email" class="form-control" placeholder="email" name="email">

  <input type="password" id="pass1" class="form-control" placeholder="password" name="password_1">

  <input type="password" id="pass2" class="form-control" placeholder="password again" name="password_2">
  </br>

  <button class="btn btn-lg btn-primary btn-block" type="submit" onClick="return regvalidate()" name="register_btn">Register</button>

</form>

【问题讨论】:

只需使用= 而不是+= 您可以使用errortable.innerHTML = "thing" 而不是+=。这会让你一次显示一个错误。 如果您不想添加到已经存在的内容,为什么首先使用+= += 变为 errortable.innerHTML + errortable.innerHTML = 'your string' 就像其他人指出的那样使用= 【参考方案1】:

只需删除=之前的+,如下所示

errortable.innerHTML += 'Two pass dosent match';

或者这样做

errortable.innerHTML = '';
errortable.innerHTML += 'Two pass dosent match';

【讨论】:

以上是关于我怎样才能让innerHtml 只写一次错误?的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能在“.innerHTML”中添加 <g:textField>?

C++ - 最佳实践#define 只写一次的值?

Excel 怎样求差集,并集和交集还有容错

我怎样才能让我的 caroutine 每 x 秒运行一次

我怎样才能让我的比赛在 vim 中不贪心?

每次我运行 pyinstaller 可执行文件时,pyngrok 都会下载 ngrok。我怎样才能让它只下载一次ngrok?