开发者问题收集

为什么我可以选择使用 nodeValue 而不是仅使用 Value?[重复]

2017-04-29
13226

我正在编写一个 html 页面,该页面获取姓名、地址和电话号码以进行验证。当 javascript 函数尝试获取输入中值的长度时,我收到此错误:“Uncaught TypeError:无法读取 null 的属性‘length’”

我不知道 nodeValue 是什么意思,但我只是想获取输入中的值。

这是 javascript 中出现错误的部分代码:

function Validate(nameInput, lastNameInput, addressInput, phoneInput)
{

var errorSpan = document.getElementById("errorSpan");
var okSpan = document.getElementById("okSpan");

var nameErrSpan = document.getElementById("nameErrSpan");
var lastNameErrSpan = document.getElementById("lastNameErrSpan");
var addressErrSpan = document.getElementById("addressErrSpan");
var phoneErrSpan = document.getElementById("phoneErrSpan");

var nameLength = nameInput.nodeValue.length;
var lNameLength = lastNameInput.nodeValue.length;
var addressLength = addressIput.nodeValue.length;
var phoneLength = phoneInput.nodeValue.length;

我需要更改什么才能获取输入中的值并对其进行测量?

这是我的 html 代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Validation Form</title>
</head>
<body>

<div>
    <span>First name:</span><br />
    <input type="text" id="firstName" /> <span id="nameErrSpan" class="nHidden">Name Must Be Between 3 - 10 Letters</span>
    <br>


    <span>Last name:</span><br />
    <input type="text" id="lastName" /> <span id="lastNameErrSpan" class="lnHidden">Last Name Must Be Between 3 - 10 Letters</span>
    <br>

    <span>Address:</span><br />
    <input type="text" id="address" /> <span id="addressErrSpan" class="adHidden">Address Must Be Between 10 - 25 Letters</span>
    <br>

    <span>Phone number:</span><br />
    <input type="text" id="phoneNumber" /> <span id="phoneErrSpan" class="pHidden">Phone Must Be Between 3 - 10 Digits</span>
    <br>

    <button onclick="Validate(firstName, lastName, address, phoneNumber)">Check</button><br />

    <span id="errorSpan" class="hidden">Missing fields</span><br />
    <span id="okSpan" class="hidden">All fields are filled</span><br />

    <button onclick="reset()">Reset</button><br />


</div>

<link rel="stylesheet" href="registrationForm.css">
<script src="registrationForm.js"></script>
</body>
</html>
2个回答

要获取输入到 input 中的文本,您应该使用 .value ,而不是 .nodeValue

var nameLength = nameInput.value.length;
var lNameLength = lastNameInput.value.length;
var addressLength = addressIput.value.length;
var phoneLength = phoneInput.value.length;
Barmar
2017-04-29

input 元素的值可从其 <​​code>value 属性获取。 nodeValue 所有 DOM 节点的属性,与 input 元素无关。

2017-04-29