Javascript “简单表单验证帮助”;无法读取属性';元素';“未定义”的定义;
这里的新手,我想弄明白为什么我会“无法读取未定义的属性‘元素’” 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 + '!');
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">