Javascript 我如何声明onclick处理程序有什么问题吗?

Javascript 我如何声明onclick处理程序有什么问题吗?,javascript,xhtml,Javascript,Xhtml,由于某些原因,我无法使警报框(作为测试添加)正确显示。该函数似乎根本不执行。你认为我做错了什么 我的代码位于btw/结果。提前感谢您的输入 您的代码中有许多错误 使用JSLint测试代码后,我发现了以下错误: 错误:第2行出现问题字符22:使用数组文字符号[]。var x=新数组() 第9行第22个字符出现问题:使用数组文字符号[]。变量 h=新数组() 第10行第24个字符出现问题:缺少分号。h[0]=” 第11行第12个字符出现问题:红色语句上的标签“颜色”。 颜色:红色 第11行的问题字符

由于某些原因,我无法使警报框(作为测试添加)正确显示。该函数似乎根本不执行。你认为我做错了什么


我的代码位于btw/结果。提前感谢您的输入

您的代码中有许多错误
使用JSLint测试代码后,我发现了以下错误:

错误:第2行出现问题字符22:使用数组文字符号[]。var x=新数组()

第9行第22个字符出现问题:使用数组文字符号[]。变量 h=新数组()

第10行第24个字符出现问题:缺少分号。h[0]=” 第11行第12个字符出现问题:红色语句上的标签“颜色”。 颜色:红色

第11行的问题字符12:应为赋值或函数 打电话时,他看到了一个表情

第12行的问题字符5:应为赋值或函数 调用并看到一个表达式。“>请键入一个名称!“

第13行第24个字符出现问题:缺少分号。h[1]=” 第14行的问题字符12:“颜色”已定义。颜色: 红色

第14行第12个字符出现问题:红色语句上的标签“颜色”。 颜色:红色

第14行的问题字符12:应为赋值或函数 打电话时,他看到了一个表情。颜色:红色

第15行的问题字符5:应为赋值或函数 打电话时,他看到了一个表情。“>您必须键入最后一个 “名字!”

第16行第24个字符出现问题:缺少分号。h[2]=” 第17行的问题字符12:“颜色”已定义。颜色: 红色

第17行第12个字符出现问题:红色语句上的标签“颜色”。 颜色:红色

第17行的问题字符12:应为赋值或函数 打电话时,他看到了一个表情

第18行的问题字符5:应为赋值或函数 调用并看到一个表达式。“>您必须键入有效的电子邮件 住址!“

第19行第24个字符出现问题:缺少分号。h[3]=” 第20行的问题字符12:“颜色”已定义。颜色: 红色

第20行的问题字符12:红色语句上的标签“颜色”。 颜色:红色

第20行的问题字符12:应为赋值或函数 打电话时,他看到了一个表情。颜色:红色

第21行的问题字符5:应为赋值或函数 打电话时,他看到了一个表情。“>您必须键入a 密码!“

第22行第24个字符出现问题:缺少分号。h[4]=” 第23行的问题字符12:“颜色”已定义。颜色: 红色

第23行第12个字符出现问题:红色语句上的标签“颜色”。 颜色:红色

第23行的问题字符12:应为赋值或函数 打电话时,他看到了一个表情

第24行的问题字符5:应为赋值或函数 调用并看到一个表达式。“>您必须确认 密码!“

第26行的问题字符26:使用数组文字符号[]。 var divs=新数组(“mname”、“mlname”、“memail”、“mpassword”, “mconfirm”)

第26行的问题字符26:使用数组文字符号[]。 var divs=新数组(“mname”、“mlname”、“memail”、“mpassword”, “mconfirm”)

第26行出现问题字符26:停止,无法继续。(72% 扫描)


一个明显的问题是字符串常量中的引号导致语法错误。例如

h[0] = "<span style="color:red;">Please type a name!</span>";
h[0]=“请键入一个名称!";
应该是

h[0] = "<span style=\"color:red;\">Please type a name!</span>";
h[0]=“请键入一个名称!";

h[0]=“请键入一个名称!”;
  • var h=new Array();
    应该是
    var h=[];

  • h[0]=“请键入一个名称!“;
    是无效语法-您希望它如何知道哪个
    是用来终止字符串的?使用
    style='color:red'
    (单引号)

  • 用于(x中的i)

  • 如上所述,绑定到表单的提交事件,而不是单击按钮。不要使用内联处理程序,使用事件侦听器

  • 如果有错误,处理程序需要
    返回false
    停止表单提交到服务器

  • 阅读并使用JSLint


  • 主要问题实际上在于定义错误范围的方式,例如:

    h[0] = "<span style="color:red;">Please type a name!</span>";
    
    h[0]=“请键入一个名称!”;
    
    这会导致语法错误,因为样式周围的引号未被转换,导致它们结束字符串。这破坏了整个功能。逃离它们会让你走很长的路:

    h[0] = "<span style=\"color:red;\">Please type a name!</span>";
    
    h[0]=“请键入一个名称!”;
    

    但是您还需要检查基恩的答案。

    ''
    更改为
    ''

    h[0]=“请键入一个名称!”;
    h[1]=“您必须键入姓氏!”;
    h[2]=“您必须键入有效的电子邮件地址!”;
    h[3]=“您必须键入密码!”;
    h[4]=“您必须确认密码!”;
    
    试试这个方法instead@Philip. 他在代码中有错误…@gdoron是的,从你的回答看来是这样。这些不全是错误,它们是建议,你列出所有这些问题无助于找出真正的问题(未替换的引号)@JuanMendes。对,我的意思是让他知道,面对面地用jslint测试代码可以给你答案。(+最佳实践)Re:2,我已经阅读了你的链接。我仍然不明白为什么我应该避免使用
    for(I in x)
    。从这个链接:“for in语句的目的是枚举对象属性,这个语句将在原型链中上升,枚举继承的属性,这有时是不需要的。还有,它的顺序
    h[0] = "<span style=\"color:red;\">Please type a name!</span>";
    
         h[0] = "<span style='color:red;'>Please type a name!</span>";
         h[1] = "<span style='color:red;'>You must type a last name!</span>";
         h[2] = "<span style='color:red;'>You must type a valid email address!</span>";
         h[3] = "<span style='color:red;'>You must type a password!</span>";
         h[4] = "<span style='color:red;'>You must confirm the password!</span>";