JavaScript:全局变量的代码示例 "Use Strict" 解释



我正在学习jquery,并开始我的第一次尝试建立一个表单验证脚本基于我所知道的到目前为止(这不是很多)。

这实际上只是验证脚本的单选按钮部分,但我认为在我走得太远之前,我已经走上了正确的轨道(编码方面)。我知道有一些基本问题需要解决。

脚本(jsFiddle): http://jsfiddle.net/pkdsleeper/xNt5n/

问题:

a. How best to remove the global variables using 
b. jsLint recommends "use strict", so I added it, but im not sure what it does. 
c. any good refs?
d. Generally, feel free to rip this code apart (cuz I AM trying to learn) but 
   please explain my errors in noob-speak :)

Thanks In advance
卧铺

。如何最好地使用

删除全局变量

将其封装在一个匿名函数中,并将其作为提交监听器分配给表单。

b。jsLint建议"使用严格",所以我添加了它,但我不确定它是做什么的。有好的裁判吗?

不用麻烦了。这只是那些想要赶时髦的人的流行语。你不能在一般的网页上使用严格模式功能,因为太多的浏览器不支持它们。你可以在其他兼容的ES 3代码中使用它,但它只适用于在测试过程中应该发现的错误的调试工具(例如,调用构造函数而不使用new)。

没有c ?

d。一般来说,请随意撕扯这段代码(因为我正在努力学习),但请解释我的错误在nob -speak:)

>   $rdoGroup = [], // an empty array which will be used to hold 

您似乎使用$来指示引用jQuery对象的变量,但$rdoGroup只是一个数组。这可能会让你以后感到困惑。

>     $rdoGroup.push($(this).attr("name"));

$函数非常昂贵,如果不需要就不要使用它。标准HTML属性在所有浏览器中都可以作为DOM属性使用,因此:

      $rdoGroup.push(this.name);

的效率高达100倍,具体取决于浏览器。

>     for (i = 0; i < $rdoGroup.length; i++) {               
>         if ($rdoGroup[c].toString() !== $(this).attr("name").toString()) {

赋给$rdoGroup的值是字符串,调用它们的toString方法是多余的。

如上所述,使用this.name。name属性是字符串,所以不需要toString

我认为如果没有jQuery,这个练习会更容易,它似乎是更多的阻碍而不是帮助。如果你想学习javascript,我建议你不要使用任何库来学习javascript。

一旦你对使用javascript有了相当的信心,那么你就可以更好地将一个库用于它擅长的事情,而不是用于它不擅长的事情。

a。你把环球球处理得很好。但是现在你的代码看起来,你可以把整个东西包装在(function(){ ... all your current code in here ... }())中,在全局作用域中不留下任何

b。关于"use strict",参见这个问题

c。typeof questions['c'] === "undefined"

d。目前,你的js过于依赖于标记(html),反之亦然。如果要在表单中添加或删除某些内容,则必须编辑js。如果您想对另一个表单使用验证,则必须重新开始整个操作。

验证器是"不引人注目的javascript"/渐进增强的主要候选(这里有一些材料:A List Apart &维基百科)。基本上,你的标记(html),你的样式(css),和你的"行为"(javascript)都应该是分开的,所以他们可以独立地改变。你可以试试:

  1. 在表单中添加类名(例如:"验证")
  2. 设置你的js寻找form.validate时,页面已经加载
  3. 对于它找到的每个表单,添加一个submit事件处理程序
  4. 当处理程序触发时,您使用您指定的各种其他类名(例如;"要求"或"电话号码"之类的)。类名告诉代码应该执行哪种验证。例如,<input type="text" class="required zip-code">意味着a)它是邮政编码,b)它是必填字段。
  5. 如果有任何验证错误,取消提交并以某种方式提醒用户。否则,让提交继续。

这显然是一个非常粗略的大纲,但我不会为你写你的代码:)
关键是,如果你需要更多的表单或不同的表单或类似的东西,你有一个通用的验证脚本,你所需要做的就是用适当的类名"标记"输入。

总而言之:有的jQuery插件在那里做表单验证。当然,这仍然是一个很好的练习,自己写一个,但这也是一个好主意,看看已经有什么,以及它是如何工作的。不要马上看代码,而是仔细阅读这些验证器是如何使用的(例如,它们是否使用类名或其他东西?),并试图弄清楚它们是如何工作的。

最新更新