javascript - 为什么验证后输入值未定义?

标签 javascript

我有一个似乎无法解决的简单问题。我只是希望能够在输入您的姓名并单击提交后显示输入名称字段的值。然而,似乎出现了未定义的情况。

有人可以解释为什么会发生这种情况以及如何解决吗?代码如下:

var name = document.querySelector('#withJS input:first-of-type'),
    date = document.querySelector('#withJS input:not(:first-of-type)'),
    errorMsg = document.querySelector('#withJS .errorMsg');
  
  errorMsg.style.display='none';

  function validateForm() {
    alert(name.value);
    /*
    if(name.length == 0){
    errorMsg.style.display='block';
      errorMsg.textContent='Enter Name';
    }
    */
  }
#noJS, #withJS {
  background: lightgreen;
  max-width: 300px;
  padding: 10px;
  border: 5px solid #ccc;
}
#withJS {
  background: lightblue;
  margin-top: 10px;
}

.errorMsg {
  background: red;
  padding: 10px;
  margin-top: 10px;
  color: #fff;
  text-transform: uppercase;
}
<div id='withJS'>
<form>
Name:<br>
<input type="text">
  <br>
  Date:<br>
<input type="date">
  <br><br>
  <input type="submit" value="Submit" onclick='validateForm()'>
</form>
  <div class='errorMsg'>error message here</div>
</div>

感谢您的帮助。

最佳答案

您声明的全局变量namewindow属性name冲突。更改该变量的名称,即:fname

var fname = document.querySelector('#withJS input:first-of-type'),
    date = document.querySelector('#withJS input:not(:first-of-type)'),
    errorMsg = document.querySelector('#withJS .errorMsg');
  
  errorMsg.style.display='none';

  function validateForm() {
    alert(fname.value);
    /*
    if(name.length == 0){
    errorMsg.style.display='block';
      errorMsg.textContent='Enter Name';
    }
    */
  }
#noJS, #withJS {
  background: lightgreen;
  max-width: 300px;
  padding: 10px;
  border: 5px solid #ccc;
}
#withJS {
  background: lightblue;
  margin-top: 10px;
}

.errorMsg {
  background: red;
  padding: 10px;
  margin-top: 10px;
  color: #fff;
  text-transform: uppercase;
}
<div id='withJS'>
<form>
Name:<br>
<input type="text">
  <br>
  Date:<br>
<input type="date">
  <br><br>
  <input type="submit" value="Submit" onclick='validateForm()'>
</form>
  <div class='errorMsg'>error message here</div>
</div>

关于javascript - 为什么验证后输入值未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54930952/

相关文章:

javascript - 是否可以在删除 "<"和 ">"的情况下插入工作 JavaScript?

javascript - 使用 jQuery 的 $(this) 会在函数内引发错误

JavaScript 错误 : "missing ) after argument list"

javascript - 发送 JSON 数据进行调试

javascript - 提交表单数据的 toggle() div 元素

javascript - 这个 === Firebug 中的窗口

javascript - React - 单独脚本中的组件不起作用

javascript - 无法读取未定义的属性 'action'

javascript - 未处理的拒绝(类型错误): this is undefined when write this. setState(数据);在 componentDidMount 函数中

JavaScript/Angular : How to initialize a property from an array of the same object?