Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 “简单表单验证帮助”;无法读取属性';元素';“未定义”的定义;_Javascript - Fatal编程技术网

Javascript “简单表单验证帮助”;无法读取属性';元素';“未定义”的定义;

Javascript “简单表单验证帮助”;无法读取属性';元素';“未定义”的定义;,javascript,Javascript,这里的新手,我想弄明白为什么我会“无法读取未定义的属性‘元素’” javascript: function conf() { for (i=0; i<5; i++) { box = document.project.elements[i]; if (!box.value) { alert('You haven\'t filled in ' + box.name + '!');

这里的新手,我想弄明白为什么我会“无法读取未定义的属性‘元素’”

javascript:

function conf()
{
    for (i=0; i<5; i++)
    {
        box = document.project.elements[i];
        if (!box.value) 
        {
            alert('You haven\'t filled in ' + box.name + '!');
            return false
        }
    }
    return true;
}
函数conf()
{

对于(i=0;i要获取表单元素,需要使用表单id

document.getElementById('project').elements[i];
更好的方法是使用
document.querySelectorAll()
并获取您感兴趣的元素,在本例中

document.querySelectorAll('#project input[type="text"], textarea')
这将为您提供一个元素数组,您可以循环并执行检查


顺便说一句,您可能迟早会开始需要对每个输入进行单独检查。其中一种方法是使用新的方法。

您尝试过的方法应该可以工作,因为带有ID的表单是文档对象的命名属性。也许您有另一个带有项目名称或ID的元素

如果表单是唯一具有项目名称或ID的元素,您可以正式编写:

document.forms.project.elements...
或更短:

document.project.elements... 
但是这个问题是可以避免的。因为表单上有一个提交侦听器,所以可以通过传递以下内容直接传递对表单的引用:


在函数中(不要忘记声明变量!!):

函数配置(表单)
{
var盒;

对于(var i=0;ioh抱歉,第7行:box=document.project.elements[i];谢谢,完成了任务:D这有点不相关,但我注意到它选择了字段集作为元素,在这里我需要它来选择输入。在不删除字段集的情况下是否仍可以这样做?只选择
input type=“text”
元素和
textarea
您可以使用
document.querySelectorAll(“#项目输入[type=“text”],textarea”)
并循环使用它。
document.project.elements... 
<form id="project" onsubmit="return conf(this)" action="#">
function conf(form) 
{
    var box;

    for (var i=0; i<5; i++) {
        box = form.elements[i];

        if (!box.value) {
            alert('You haven\'t filled in ' + box.name + '!');
            return false
        }
    }
    return true;
}
<label for="txtalbum">Song / Album:</label> <input ... name="txtalbum" id="4">
<label for="4">Song / Album:</label> <input ... name="txtalbum" id="4">