Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getElementById()在第一个元素上返回null_Javascript_Html_Getelementbyid - Fatal编程技术网

Javascript getElementById()在第一个元素上返回null

Javascript getElementById()在第一个元素上返回null,javascript,html,getelementbyid,Javascript,Html,Getelementbyid,下面的代码是我的简单注册表。问题是警报(元素[0].value)显示未定义的,而不是名称的值(这是我表单的第一个元素)。但是,如果我尝试执行alert(elements[1].value),它会毫无问题地显示name的值。有什么想法吗 <html> <body> <form name="register" id="register" method="POST" action="this-file.php"> &l

下面的代码是我的简单注册表。问题是
警报(元素[0].value)
显示
未定义的
,而不是
名称
的值(这是我表单的第一个元素)。但是,如果我尝试执行
alert(elements[1].value)
,它会毫无问题地显示
name
的值。有什么想法吗

<html>
    <body>
        <form name="register" id="register" method="POST" action="this-file.php">
            <fieldset>
                <legend><span style="color:red; font-size:20px">
                        Register</span></legend><br>

                <label for="firstname">First name<span style="color:red;">*</span></label>
                <input type="text" name="firstname" id="firstname" placeholder="Peter"
                       autofocus required><br><br>

                <label for="lastname">Last name<span style="color:red;">*</span></label>
                <input type="text" name="lastname" id="lastname" placeholder="Parker"
                       required><br><br>

                <label for="password">Password<span style="color:red;">*</span></label>
                <input type="password" name="password" id="password" required><br><br>

                <label for="favfood">Favorite food<span style="color:red;">*</span></label>
                <select name="favfood" id="favfood" required>
                    <option value="" selected>(none)</option>
                    <option value="chicken">Chicken</option> 
                    <option value="pizza">Pizza</option>
                    <option value="pasta">Pasta</option>
                    <option value="hamburger">Hamburger</option>
                    <option value="steak">Steak</option>
                </select>
                <p>Gender<span style="color:red;">*</span></p>
                <ul>
                    <li>
                        <input type="radio" name="gender" id="male" value="male" required>
                        <label for="male">Male</label>
                    </li>
                    <li>
                        <input type="radio" name="gender" id="female" value="female" required>
                        <label for="female">Female</label>
                    </li>
                </ul>
            </fieldset><br>
            <input type="submit" value="Register" name="register"> 
            <input type="reset" value="Clear form" name="clear"><br><br>
        </form>
        <script type="text/javascript">
            var form = document.getElementById('register');
            var elements = form.elements;

            form.noValidate = true;
            form.addEventListener('submit', function (event) {
                alert(elements[0].value); //displays "undefined" -- why?
                for (var i = 0; i < elements.length; i++) {
                    if (elements[i].hasAttribute("required")) {
                        if (!elements[i].checkValidity()) {
                            event.preventDefault();
                            alert('Please, fill in every required field.');
                            form.reset();
                            elements[0].focus();
                            break;
                        }
                    }
                }
            }, false);
        </script>
    </body>
</html>

注册
名字*

姓*

密码*

喜爱的食物* (无) 鸡 披萨 意大利面食 汉堡包 牛排 性别*

  • 男性
  • 女性



var form=document.getElementById('register'); var元素=form.elements; form.noValidate=真; 表单.addEventListener('submit',函数(事件){ 警报(元素[0].value);//显示“未定义”--为什么? 对于(var i=0;i
元素集合中的第一个元素是
。它没有名称或值

(是的,我知道
元素
包含字段集并没有什么意义,但确实如此)


在尝试运行验证例程之前,测试元素标记名
的值,查看是否正在处理输入/选择/文本区域。

不要使用
警报进行调试
console.log(elements)
并查看什么元素是
elements[0]
(这是字段集)。@JJJ谢谢你的建议。这听起来很奇怪,但很有效。你说使用数字索引是个坏主意:那么,你建议在我的代码中修改什么?@sgrontflix-该评论是针对n1kkou的建议,即使用
document.forms[0]
而不是
document.getElementById
。您使用的是ID而不是数字索引,所以我不建议您更改它。哦,好的。感谢您对使用
标记名
进行测试的建议。你真棒,伙计!