2012-03-27 38 views
2

在下面的代码,这条线是有点奇怪对我说:JavaScript处理表单,这个数组表示法如何工作?

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> 

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

回答

1

此:

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

是完全一样的:

var x = document.forms.myForm.fname.value; 

其实真的没有理由(在这种情况下),它被写入事情是这样的。

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

顺便说一下,在这个例子中根本没有数组参与。只是对象属性引用。

+0

啊我现在看到了!非常感谢波蒂! – Coffee 2012-03-27 22:42:24

1

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

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

+0

非常感谢你Maerics!我正在研究Mozilla的参考资料,非常有帮助。 – Coffee 2012-03-27 22:49:46