Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.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 else语句仅当所有内容都正确填写时才返回true_Javascript_Html_If Statement - Fatal编程技术网

javascript else语句仅当所有内容都正确填写时才返回true

javascript else语句仅当所有内容都正确填写时才返回true,javascript,html,if-statement,Javascript,Html,If Statement,我做了一个小表格,检查是否所有内容都填写正确。我在代码中使用if…else语句检查输入 在控制台中,它返回true,而它应该返回false,因为我没有在输入框中输入任何内容。我希望我的else语句仅在所有内容都正确填写时才返回true 函数验证(){ var fields=f1.getElementsByTagName('input'); var属性=[]; 对于(i=0;i0&&namelength属性[0][2]){ document.getElementById(“namelocatio

我做了一个小表格,检查是否所有内容都填写正确。我在代码中使用
if…else
语句检查输入

在控制台中,它返回
true
,而它应该返回
false
,因为我没有在输入框中输入任何内容。我希望我的
else
语句仅在所有内容都正确填写时才返回
true

函数验证(){
var fields=f1.getElementsByTagName('input');
var属性=[];
对于(i=0;i0&&namelength属性[0][2]){
document.getElementById(“namelocation”).innerHTML=“名称长度不超过“+”+属性[0][2]+”+“+”个字符。”;
状态=假;
}否则{
状态=真;
控制台日志(状态);
警报(状态);
}
返回状态;
}

姓名:

您的意思是,只有当所有内容都正确填写时,才希望控制台返回true。但是,查看代码的最后一块:

  if (namelength > attribute[0][2]) {
    document.getElementById("namelocation").innerHTML = "Name not longer than" + " " + attribute[0][2] + " " + "characters.";
    status = false;
  } else {
    status = true;
    console.log(status);
    alert(status);
  }
此if-else语句执行以下操作(在psuedocode中):


所以这已经造成了一个问题。我没有研究代码的其余部分,但我建议您逐块测试以正确调试。

您的代码一开始就有很多错误

给出一个
表单
一个
名称
并没有错,但它没有好处。
name
属性用于表单中需要以
name/value
对提交其值的字段。
表单本身不会这样做。如果希望能够从JavaScript中识别
表单
,可以给它一个
id
,并使用
.getElementById()
,或者使用使用CSS选择器查找它

正如我在评论中提到的,
validate
不是有效的HTML属性<代码>数据验证
是合法的(它是一个),但您可以使用访问它的值

接下来,事件处理函数将始终被传递一个对它们正在处理的事件对象的引用,最好设置一个参数以按名称捕获它。通过这样做,您不必担心从函数返回
true
false
,您可以取消或不取消事件

接下来,不要使用内联HTML事件属性(即
onsubmit
)。这是一项有20多年历史的古老技术,我们在制定标准之前就使用了它。不幸的是,因为它无处不在,它不会像它应该的那样迅速消亡。有,而是使用现代标准

接下来,
的自终止语法是一种称为XHTML的语法。而且,在没有详细说明的情况下,还有一种语法是不应该采用的获取完整解释

.getElementsByTagName()
返回所谓的“活动”节点列表,并且由于其对代码的性能影响,只有特定的用例可供使用。相反,您应该使用查找元素组

最后,
元素不应用于页面布局。它们只能用于显示表格数据。这有性能方面的原因,也有语义方面的原因

坦率地说,你的导师应该知道,不要教这些过时的、非最佳实践的技巧。而且,当我说你应该引起他/她的注意时,我是认真的。顺便说一句,我做企业IT培训师已经超过25年了——我完全理解如何教授这些东西


现在,关于你的具体问题。这实际上只是归结为你的逻辑没有被正确应用。您正在测试一个空字段要使用什么消息(基于
validate
属性中存储的值)并设置该消息,但实际上您没有输入任何逻辑来查看字段是否为空。这些测试需要调整

然后,一旦知道字段中有一个值,就有两个独立的
if
语句,一个测试字符太少,另一个测试字符太多。这些应该组合成一个
if
语句和一个
else if
语句,以涵盖这两种可能性

我只是想回顾一下我之前关于事件处理程序总是收到对它们正在处理的事件的引用的评论。对于表单,默认情况下,我们只需要假设表单中的所有内容都是有效的。然后,当我们的任何验证测试失败时,我们可以将验证“标志”设置为false,然后在函数末尾,如果标志为
false
,我们就取消事件。如果没有,我们根本不需要做任何事情——我们只是让表单像在我们收到发票之前一样提交

这是一个更新的版本,上面提到的项目和修改的逻辑。有关详细信息,请参阅内联注释:

//完成所有JavaScript工作
if namelength > 20 return false else return true