【发布时间】:2020-06-20 20:03:44
【问题描述】:
除了我的简短研究告诉我,后者将返回一个集合,而不是传递 ID 的单个元素。
考虑以下代码:
function validateAllFields()
{
var clientid = document.getElementById("clientid");
var programs = document.getElementById("programs");
var startmonth = document.getElementById("startmonth");
var startday = document.getElementById("startday");
var startyear = document.getElementById("startyear");
var completed = document.getElementsByName("completed");
var goals = document.getElementsByName("goals");
var errors = document.getElementById("errorMsg");
errors.innerHTML = "";
if(isNumeric(clientid, errors, "Please enter a valid client ID")){
if(madeSelection(programs, errors, "Please select a program from the drop-down list")){
if(madeSelection(startmonth, errors, "Please enter a month for the start date")){
if(madeSelection(startday, errors, "Please enter a day for the start date")){
if(madeSelection(startyear, errors, "Please enter a year for the start date")){
if(checked(completed, errors, "Please choose an option that indicate whether the client has completed the program")){
if(checked(goals, errors, "Please choose an option that indicate whether the client has met his/her goals.")){
window.alert("GOT IN TO RETURN TRUE");
return true;
}
}
}
}
}
}
}
return false;
}
</script>
上面的代码放在表单的 onsubmit 处理程序中后可以完美运行。然而,早些时候,对于我使用 getElementsByName() 的元素(程序、startmonth、startday、startyear),发生了以下情况:
- 代码似乎到达了 if 块“if(madeSelection(programs....”
- 如果 JS 确实返回 true,则继续提交表单。如您所知,在返回 true 之前有一个弹出警报,并且弹出窗口根本没有出现。
- 错误的数据被提交到我的测试数据库,因为表单没有经过验证。 (尚未使用此表单编写服务器端验证,但我会的)。
请假设元素 programs、startmonth、startday 和 startyear 是带有相同的 id 和 name 属性。
另外,madeSelection 函数如下:
function madeSelection(element, error, msg) {
if (element[0].value == "none" || element[0].valueOf == "none" || element[0].value == "") {
error.innerHTML = msg;
element.focus();
return false;
} else {
return true;
}
}
在我将这些元素更改为使用 getElementById() 后,我的代码现在可以正常工作,我只是想知道为什么 getElementsByName 会出现这种行为。
【问题讨论】:
-
你的意思是getElementsByTagName()吗?
-
@kinakuta - 不,他没有:w3schools.com/jsref/met_doc_getelementsbyname.asp
-
您的代码与所有缩进都是一团糟。考虑在每次检测到错误后返回 false,如果没有错误则最后返回 true。
-
谈论混乱的代码...当人们说 PHP 很混乱时,我就笑了...赞赞 Zecc
标签: javascript