You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FrontPage制作校园教学网站时出现indexOf未定义错误求助

解决FrontPage教学网站的JavaScript验证错误

你遇到的「行:28 字符:1 错误:indexOf属性的值为null或未定义,不是对象/函数」问题,根源很明确——你的JavaScript代码里错误地直接调用了indexOf、substring这些字符串方法,没有绑定到具体的字符串实例上。在浏览器的全局作用域里,这些方法并不是直接可用的全局函数,必须通过字符串对象来调用。

具体问题点和修复方案

下面是你的代码里需要修正的核心问题:

  • JavaScript的indexOf是字符串的实例方法,正确语法是字符串.indexOf(查找值),而非你写的indexOf(查找值, 字符串)
  • substring同样是字符串实例方法,需要通过具体字符串调用
  • length是字符串的属性,不是函数,不能写成length(字符串),要写成字符串.length

修复后的完整验证代码

function verif() {
    // 建议明确获取表单对象,避免全局变量f未定义的问题
    var f = document.forms['你的表单名称'];
    var a = f.T1.value;
    var b = f.T2.value;
    var c = f.T3.value;
    var lettres = /^[A-Za-z]+$/;
    var chiffres = /^[0-9]+$/;
    var lett = a.charAt(0) + a.charAt(1);
    var chiff = a.charAt(2) + a.charAt(3);

    if (!(lett.match(lettres)) && !(chiff.match(chiffres))) {
        alert("2 premier lettres alphabet et 2 autres chiffres");
        return false;
    }
    if (!(b.match(lettres)) || b == "") {
        alert("chaine alphabetique non vide");
        return false;
    }
    if (!(c.match(lettres)) || c == "") {
        alert("chaine alphabetique non vide 2");
        return false;
    }

    var d = f.T4.value;
    // 修正indexOf调用方式
    if (d.indexOf('@') == -1) {
        alert("email invalid");
        return false;
    }
    v1 = d.indexOf('@');
    // 修正substring调用,基于d字符串截取
    ch = d.substring(0, v1 - 1);
    if (!(isNaN(ch))) {
        alert("email invalid");
        return false;
    }
    // 修正indexOf调用
    if (d.indexOf('.') == -1) {
        alert("email invalid");
        return false;
    }
    // 修正indexOf调用,基于ch字符串
    p2 = ch.indexOf('.');
    // 修正substring和length的使用
    ch1 = ch.substring(p2 + 1, ch.length - 1);
    if (!(isNaN(ch1))) {
        alert("email invalid");
        return false;
    }
    p3 = d.indexOf('@');
    p4 = d.indexOf('.');
    // 修正substring调用
    v1 = d.substring(p3 + 1, p4 - 1);
    if (!(isNaN(v1))) {
        alert("email invalid");
        return false;
    }
}

额外注意事项

  1. 代码里的f变量需要确保是正确的表单对象,如果你的表单name属性不是f,要把document.forms['你的表单名称']里的名称改成实际的表单name值,避免出现f未定义的新错误。
  2. 你的邮箱验证逻辑比较基础,只能做简单的格式检查,如果需要更严谨的验证,可以考虑使用更完善的正则表达式,但当前先解决indexOf的错误即可。

内容的提问来源于stack exchange,提问作者user5964692

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:33:25