表单的JavaScript处理,这个数组符号是如何工作的?

时间:2012-03-27 22:38:25

标签: javascript forms

在下面的代码中,这一行对我来说有点奇怪:

var x=document.forms["myForm"]["fname"].value;

网页:

<html>
<head>
<script type="text/javascript">
function validateForm()
{
var x=document.forms["myForm"]["fname"].value;
if (x==null || x=="")
  {
  alert("First name must be filled out");
  return false;
  }
}
</script>
</head>

<body>

<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post">

First name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>

</body>

</html>

这是如何工作的?多维数组在哪里?感谢

2 个答案:

答案 0 :(得分:1)

此:

var x=document.forms["myForm"]["fname"].value;

与:

完全相同
var x = document.forms.myForm.fname.value;

事实上,没有理由(在这种情况下)以它的方式书写。

现在,如果不是那两个字符串常量 - “myForm”和“fname” - 有一些动态机制计算获取名称,那么第一个形式是有道理的。 [ ]运算符允许计算表达式以确定要访问的属性名称。

顺便说一下,这个例子中根本没有涉及任何数组。只是对象属性引用。

答案 1 :(得分:1)

document.forms object是特殊的,因为它有一个接口,通过查找属性作为数字索引(基于零)或“名称”属性来识别文档中的所有表单。

此外,form object具有类似的功能,允许您通过名称作为属性查找输入元素(和其他表单小部件)。