2012-03-27 2 views
2

Im folgenden Code ist diese Linie ein bisschen zu mir seltsam:JavaScript-Handhabung von Formularen, wie funktioniert diese Array-Notation?

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

Die Webseite:

<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> 

Wie funktioniert das? Wo ist das multidimensionale Array?

dank

Antwort

1

Dieser:

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

ist genau das gleiche wie:

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

In der Tat gibt es wirklich keinen Grund (in diesem Fall) für den Weg geschrieben zu werden ist.

Nun, wenn anstelle der beiden String-Konstanten — „myForm“ und „fname“ — es einige dynamische Mechanismus waren die berechnet oder geholt die Namen, dann ist die erste Form macht Sinn. Der Operator [ ] ermöglicht, dass ein Ausdruck ausgewertet wird, um einen Eigenschaftennamen für den Zugriff zu bestimmen.

In diesem Beispiel sind übrigens keine Arrays beteiligt. Objekte nur auf Objektverweise anwenden.

+0

Ah sehe ich jetzt! Vielen Dank Spitzen! – Coffee

1

Die document.forms object ist speziell, weil sie über eine Schnittstelle verfügt, um alle Formulare im Dokument zu identifizieren, indem eine Eigenschaft als numerischer Index (nullbasiert) oder mit dem Attribut "name" gesucht wird.

Außerdem verfügt das form object über eine ähnliche Funktion, mit der Sie Eingabeelemente (und andere Formularwidgets) nach ihrem Namen als Eigenschaft suchen können.

+0

Vielen Dank Maerics! Ich studiere jetzt die Mozilla-Referenzen, sehr hilfreich. – Coffee

Verwandte Themen