18910140161

HTML-为什么我的JavaScript文件在没有任何明显错误的情况下崩溃?-堆栈溢出

顺晟科技

2022-10-19 14:06:46

58

当我在Chrome上检查控制台时,尽管没有明显的错误,但我的JavaScript崩溃了。我尝试从JavaScript中重新排列和删除某些函数,但似乎没有特定的模式,所以我无法确定是哪段代码使其馀部分崩溃。

具体发生的情况是,除了出生日期验证之外,我的所有验证都停止工作。

注意:不能使用内联JavaScript或jQuery。


顺晟科技:

谢谢您的澄清。

问题出在方法上。

function validate() {
  var errMsg = "";
  var result = true;

  var fname = document.getElementById("fname").value;
   if (!fname.match(/^[a-zA-Z]+$/)) {
        errMsg += "Please enter your first name correctly.\n";
        result = false;
    }
  var lname = document.getElementById("lname").value;
    if (!lname.match(/^[a-zA-Z]+$/)) {
        errMsg += "Please enter your last name correctly.\n";
        result = false;
    }
  var email = document.getElementById("email").value;
    if (!email.match(/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/)) {
        errMsg += "Please enter your email correctly.\n";
        result = false;
    }
  var streetname = document.getElementById("streetname").value;
    if (!streetname.match(/^[a-zA-Z0-9\s]+$/)) {
        errMsg += "Please enter your street name correctly.\n";
        result = false;
    }
    var suburb = document.getElementById("suburb").value;
    if (!suburb.match(/^[a-zA-Z\-]+$/)) {
        errMsg += "Please enter your suburb correctly.\n";
        result = false;
    }
    var phone = document.getElementById("phone").value;
  if (!phone.match(/[0-9]{9}/)) {
        errMsg += "Please enter your phone number correctly.\n";
        result = false;
    }


  var postcode = document.getElementById("postcode").value;
  var state = document.getElementById("state").options[
document.getElementById("state").selectedIndex
  ].text;

  var regex;
  //VIC = 3 OR 8, NSW = 1 OR 2 ,QLD = 4 OR 9 ,NT = 0 ,WA = 6 ,SA=5 ,TAS=7 ,ACT= 0.
  switch (state) {
case "Please Select":
  return false;
case "VIC":
  regex = new RegExp(/(3|8)\d+/);
  break;
case "NSW":
  regex = new RegExp(/(1|2)\d+/);
  break;
case "QLD":
  regex = new RegExp(/(4|9)\d+/);
  break;
case "NT":
  regex = new RegExp(/0\d+/);
  break;
case "WA":
  regex = new RegExp(/6\d+/);
  break;
case "SA":
  regex = new RegExp(/5\d+/);
  break;
case "TAS":
  regex = new RegExp(/7\d+/);
  break;
case "ACT":
  regex = new RegExp(/0\d+/);
  break;
  }
  if (!postcode.match(regex)) {
errMsg = errMsg + "State and postcode do not match\n";
result = false;
  }

  if (errMsg) {
alert(errMsg);
  }

  if (result) {
storeBooking(
  fname,
  lname,
  email,
  phone,
  streetname,
  suburb,
  state,
  postcode
);
  }
  return result;
}

function storeBooking(
  fname,
  lname,
  email,
  phone,
  streetname,
  suburb,
  state,
  postcode
) {
  sessionStorage.fname = fname;
  sessionStorage.lname = lname;
  sessionStorage.email = email;
  sessionStorage.phone = phone;
  sessionStorage.streetname = streetname;
  sessionStorage.suburb = suburb;
  sessionStorage.state = state;
  sessionStorage.postcode = postcode;
}



function init() {
  var regForm = document.getElementById("regform");

  regForm.onsubmit = validate;
}

window.onload = init;

window.onload = function() {
  var date = new Date();
  var dd = date.getDate();
  var mm = date.getMonth() + 1;
  var yyyy = date.getFullYear();

  //Add a zero if one Digit (eg: 05,09)
  if (dd < 10) {
    dd = "0" + dd;
  }

  //Add a zero if one Digit (eg: 05,09)
  if (mm < 10) {
    mm = "0" + mm;
  }

  minYear = yyyy - 80; //Calculate Minimun Age (<80)
  maxYear = yyyy - 15; //Calculate Maximum Age (>18)

  var min = minYear + "-" + mm + "-" + dd;
  var max = maxYear + "-" + mm + "-" + dd;

  document.getElementById("start").setAttribute("min", min);
  document.getElementById("start").setAttribute("max", max);
};

在这段代码中,您将init函数分配给window.onload,然后立即用

重新分配

所以永远不会调用init()函数。 尝试移动init函数调用,如下所示:

function validate() {
  var errMsg = "";
  var result = true;

  var fname = document.getElementById("fname").value;
   if (!fname.match(/^[a-zA-Z]+$/)) {
        errMsg += "Please enter your first name correctly.\n";
        result = false;
    }
  var lname = document.getElementById("lname").value;
    if (!lname.match(/^[a-zA-Z]+$/)) {
        errMsg += "Please enter your last name correctly.\n";
        result = false;
    }
  var email = document.getElementById("email").value;
    if (!email.match(/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/)) {
        errMsg += "Please enter your email correctly.\n";
        result = false;
    }
  var streetname = document.getElementById("streetname").value;
    if (!streetname.match(/^[a-zA-Z0-9\s]+$/)) {
        errMsg += "Please enter your street name correctly.\n";
        result = false;
    }
    var suburb = document.getElementById("suburb").value;
    if (!suburb.match(/^[a-zA-Z\-]+$/)) {
        errMsg += "Please enter your suburb correctly.\n";
        result = false;
    }
    var phone = document.getElementById("phone").value;
  if (!phone.match(/[0-9]{9}/)) {
        errMsg += "Please enter your phone number correctly.\n";
        result = false;
    }


  var postcode = document.getElementById("postcode").value;
  var state = document.getElementById("state").options[
document.getElementById("state").selectedIndex
  ].text;

  var regex;
  //VIC = 3 OR 8, NSW = 1 OR 2 ,QLD = 4 OR 9 ,NT = 0 ,WA = 6 ,SA=5 ,TAS=7 ,ACT= 0.
  switch (state) {
case "Please Select":
  return false;
case "VIC":
  regex = new RegExp(/(3|8)\d+/);
  break;
case "NSW":
  regex = new RegExp(/(1|2)\d+/);
  break;
case "QLD":
  regex = new RegExp(/(4|9)\d+/);
  break;
case "NT":
  regex = new RegExp(/0\d+/);
  break;
case "WA":
  regex = new RegExp(/6\d+/);
  break;
case "SA":
  regex = new RegExp(/5\d+/);
  break;
case "TAS":
  regex = new RegExp(/7\d+/);
  break;
case "ACT":
  regex = new RegExp(/0\d+/);
  break;
  }
  if (!postcode.match(regex)) {
errMsg = errMsg + "State and postcode do not match\n";
result = false;
  }

  if (errMsg) {
alert(errMsg);
  }

  if (result) {
storeBooking(
  fname,
  lname,
  email,
  phone,
  streetname,
  suburb,
  state,
  postcode
);
  }
  return result;
}

function storeBooking(
  fname,
  lname,
  email,
  phone,
  streetname,
  suburb,
  state,
  postcode
) {
  sessionStorage.fname = fname;
  sessionStorage.lname = lname;
  sessionStorage.email = email;
  sessionStorage.phone = phone;
  sessionStorage.streetname = streetname;
  sessionStorage.suburb = suburb;
  sessionStorage.state = state;
  sessionStorage.postcode = postcode;
}



function init() {
  var regForm = document.getElementById("regform");

  regForm.onsubmit = validate;
}

window.onload = init;

window.onload = function() {
  var date = new Date();
  var dd = date.getDate();
  var mm = date.getMonth() + 1;
  var yyyy = date.getFullYear();

  //Add a zero if one Digit (eg: 05,09)
  if (dd < 10) {
    dd = "0" + dd;
  }

  //Add a zero if one Digit (eg: 05,09)
  if (mm < 10) {
    mm = "0" + mm;
  }

  minYear = yyyy - 80; //Calculate Minimun Age (<80)
  maxYear = yyyy - 15; //Calculate Maximum Age (>18)

  var min = minYear + "-" + mm + "-" + dd;
  var max = maxYear + "-" + mm + "-" + dd;

  document.getElementById("start").setAttribute("min", min);
  document.getElementById("start").setAttribute("max", max);
};
  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航