3 <link rel=
"stylesheet" type=
"text/css" href=
"../js/resources/js-test-style.css">
4 <script src=
"../js/resources/js-test-pre.js"></script>
8 description("This tests accessing form elements by name. "
9 + "IE only lets you look up names under the first name the element had and "
10 + "does not respond to name changes. Firefox remembers every name item has been "
11 + "accessed with, but forgets items that have not been accessed. "
12 + "This test has been written to expect the Firefox behavior.");
14 form
= document
.getElementById('form');
15 a
= document
.getElementById('a');
16 b
= document
.getElementById('b');
18 shouldBe('form.length', '2');
19 shouldBe('form.original', 'a');
20 shouldBe('form.originalB', 'b');
21 shouldBe('form.second', 'undefined');
22 shouldBe('form.third', 'undefined');
23 shouldBe('form.elements.original', 'a');
24 shouldBe('form.elements.originalB', 'b');
25 shouldBe('form.elements.second', 'undefined');
26 shouldBe('form.elements.third', 'undefined');
29 debug("change the form item a's name to thisWillBeRemembered");
31 a
.name
="thisWillBeRemembered";
32 debug("get the variable value through form element");
33 shouldBe('form.thisWillBeRemembered', 'a');
35 debug("now change the form item a's name to thisWillBeRememberedToo");
36 debug("access it in boolean context");
37 a
.name
="thisWillBeRememberedToo";
39 if (form
.thisWillBeRememberedToo
)
40 debug('accessed form.thisWillBeRememberedToo');
42 debug("now change the form item a's name to thisWillBeForgotten");
44 a
.name
="thisWillBeForgotten";
45 debug("get the variable value through collection");
46 shouldBe('form.elements.thisWillBeForgotten', 'a');
48 debug("now change the form item a's name to thisWillBeForgottenToo, but don't access it afterwards");
49 a
.name
="thisWillBeForgottenToo";
52 debug("now change the form item a's name to second");
56 shouldBe('form.length', '2');
57 shouldBe('form.original', 'a');
58 shouldBe('form.originalB', 'b');
59 shouldBe('form.second', 'a');
60 shouldBe('form.third', 'undefined');
61 shouldBe('form.elements.original', 'undefined');
62 shouldBe('form.elements.originalB', 'b');
63 shouldBe('form.elements.second', 'a');
64 shouldBe('form.elements.third', 'undefined');
67 debug("now change the form item a's name to third");
72 shouldBe('form.length', '2');
73 shouldBe('form.original', 'a');
74 shouldBe('form.originalB', 'b');
75 shouldBe('form.second', 'a');
76 shouldBe('form.third', 'a');
77 shouldBe('form.elements.original', 'undefined');
78 shouldBe('form.elements.originalB', 'b');
79 shouldBe('form.elements.second', 'undefined');
80 shouldBe('form.elements.third', 'a');
83 debug("now change form item b's name to second");
88 shouldBe('form.length', '2');
89 shouldBe('form.original', 'a');
90 shouldBe('form.originalB', 'b');
91 shouldBe('form.second', 'b');
92 shouldBe('form.elements.original', 'undefined');
93 shouldBe('form.elements.originalB', 'undefined');
94 shouldBe('form.elements.second', 'b');
97 debug("now change a form item b's name to third");
100 form
.originalB
.name
="third";
102 shouldBe('form.length', '2');
103 shouldBe('form.original', 'a');
104 shouldBe('form.originalB', 'b');
105 shouldBe('form.second', 'b');
106 shouldBe('form.third.length', '2');
107 shouldBe('form.third[0]', 'a');
108 shouldBe('form.third[1]', 'b');
109 shouldBe('form.elements.original', 'undefined');
110 shouldBe('form.elements.originalB', 'undefined');
111 shouldBe('form.elements.second', 'undefined');
112 shouldBe('form.elements.third.length', '2');
113 shouldBe('form.elements.third[0]', 'a');
114 shouldBe('form.elements.third[1]', 'b');
117 debug("now change a form item b's name to fourth");
120 form
.originalB
.name
="fourth";
122 shouldBe('form.third', 'a');
123 shouldBe('form.third.length', 'undefined');
124 shouldBe('form.elements.third', 'a');
125 shouldBe('form.elements.third.length', 'undefined');
128 debug("now remove element a");
133 shouldBe('form.length', '1');
134 shouldBe('form.original', 'a');
135 shouldBe('form.originalB', 'b');
136 shouldBe('form.second', 'b');
137 shouldBe('form.third', 'a');
138 shouldBe('form.fourth', 'b');
139 shouldBe('form.elements.original', 'undefined');
140 shouldBe('form.elements.originalB', 'undefined');
141 shouldBe('form.elements.second', 'undefined');
142 shouldBe('form.elements.third', 'undefined');
143 shouldBe('form.elements.fourth', 'b');
146 debug("check we still remember names we should");
149 shouldBe('form.thisWillBeForgotten', 'undefined');
150 shouldBe('form.thisWillBeForgottenToo', 'undefined');
151 shouldBe('form.thisWillBeRemembered', 'a');
152 shouldBe('form.thisWillBeRememberedToo', 'a');
154 successfullyParsed
= true;
160 <input type='hidden' id='a' name='original'
>
161 <input type='hidden' id='b' name='originalB'
>
163 <p id=
"description"></p>
164 <div id=
"console"></div>
165 <script>runTest();</script>
166 <script src=
"../js/resources/js-test-post.js"></script>