gpt4 book ai didi

javascript - 基本 javascript 遇到问题

转载 作者:行者123 更新时间:2023-12-02 17:30:04 24 4
gpt4 key购买 nike

我正在尝试进行一些极其简单的表单验证,我当前的问题是我的 window.onload 函数没有调用我指定的函数。

当我用 firebug 观察逻辑流程时,它只是跳到代码末尾。

这是我的代码示例:

window.onload = init;

function init() {
var regForm = document.getElementById("registerform");
regForm.onsubmit = validatepostcode();
}

function validatepostcode() {
var postCode = document.getElementById("postcode");
var postCodeStr = postCode.charAt(0);
var state = document.getElementById("state");
var result = true;

if (postCodeStr == 3 || 8 && state == "Vic") {
result = true;
} else if (postCodeStr == (1 || 2) && state == "NSW") {
result = true;
} else if (postCodeStr == (4 || 9) && state == "QLD") {
result = true;
} else if (postCodeStr == 0 && state == "NT" || state == "ACT") {
result = true;
} else if (postCodeStr == 6 && state == "WA") {
result = true;
} else if (postCodeStr == 5 && state == "SA") {
result = true;
} else if (postCodeStr == 7 && state == "TAS") {
result = true;
} else
result = false;

if (result = false) {
alert("Your postcode does not match your state")
}
}

最佳答案

五个问题:

  1. init 中,您有以下内容:

    regForm.onsubmit = validatepostcode();

    调用 validatepostcode 并将其返回值放入 onsubmit 中。您可能打算将函数本身放入其中,而不是其返回值。删除括号:

    regForm.onsubmit = validatepostcode;
  2. validatepostcode 中,您将获取如下元素:

    var postCode = document.getElementById("postcode");

    …但是然后尝试将它们用作值,如下所示:

    var postCodeStr = postCode.charAt(0);

    但是元素和该元素的当前值不是一回事。更有可能的是,您打算检索第一行的值:

    var postCode = document.getElementById("postcode").value;

    状态也是如此。

  3. validatepostcode 中,您有如下行:

    } else if (postCodeStr == (1 || 2) && state == "NSW") {

    具体来说,1 || 2 不会那样工作。它会像 bool 值一样看待它们并说:“一个还是两个?好吧,他们都是实话……确实如此!”你基本上会做

    } else if (postCodeStr == true && state == "NSW") {

    (实际上,它使用 1,而不是 true,因为第一个操作数是 true,但这不是这里的重点。)
    您必须用手写出来,而不是使用缩写符号:

    } else if ((postCodeStr == 1 || postCodeStr == 2) && state == "NSW") {
  4. 您在这里混淆了 ===:

    if(result=false){

    = 会将 result 设置为 false 并保持条件始终为 false。将其更改为 == 以测试相等性:

    if(result==false){
  5. 您可能想在最后返回结果,以防止出现验证错误时提交表单。应用其他更改后,如果存在验证错误,您会收到警报,但无论如何它都会继续提交。因此,在 validatepostcode 函数末尾添加一个返回结果

关于javascript - 基本 javascript 遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23147636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com