JavaScript document.forms在Chrome中不起作用

JavaScript document.forms在Chrome中不起作用,javascript,html,Javascript,Html,我有个问题。 你们能帮我看看代码有什么问题吗?因为即使我在没有填写输入文本框的情况下单击submit,也不会发生任何事情(不会显示警报) 我把index.html文件和javascript文件放在同一个文件夹中,我认为路径没有问题,但我不知道为什么没有运行。控制台内部显示 “未捕获的TypeError:无法读取script.js:1上未定义的属性'firstName'” var getInput=document.forms[“signup”][“firstName”]; 函数检查(){ 如果

我有个问题。 你们能帮我看看代码有什么问题吗?因为即使我在没有填写输入文本框的情况下单击submit,也不会发生任何事情(不会显示警报)
我把index.html文件和javascript文件放在同一个文件夹中,我认为路径没有问题,但我不知道为什么没有运行。控制台内部显示

“未捕获的TypeError:无法读取script.js:1上未定义的属性'firstName'”

var getInput=document.forms[“signup”][“firstName”];
函数检查(){
如果(getInput.value==“”){
window.alert(“请输入名字”);
getInput.focus();
返回false;
}
返回true;
}
window.onload=检查

注册
名字

乔乔先生是对的!出现该错误是因为在进行检查之前DOM未完全加载。
然而,除非你有一个真正想要使用你的方法的目的,否则这个小小的替代代码可以帮你减轻压力

function check(){
var getInput = document.getElementById("inputFirstName");
    if(getInput.value == ""){
        window.alert("Please enter a first name");
        getInput.focus();
        return false;
    }
}
然后你的提交按钮变成HTML

<input type="submit" value="Click Me" onclick="check();">

这将很好地工作:


注册
名字
点击我
const SignUpForm=document.forms[“signup”]
;
SignUpForm.onsubmit=e=>
{
如果(!SignUpForm.firstName.value.trim())
{
window.alert(“请输入名字”);
getInput.focus();
e、 预防默认值()
}
}

这是因为脚本发生在页面加载之前。将脚本放在html的末尾或使用窗口中的延迟属性。onload=check;在JavaScript文件中,那么它是如何发生的呢?请看,即使您进行了此检查,在加载页面之前getInput不存在。添加了延迟,因此现在错误消失了,但当我单击“提交”而未填充输入文本框时,仍然没有显示任何警报