167 lines
5.4 KiB
HTML
167 lines
5.4 KiB
HTML
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<script>
|
|
function runTest()
|
|
{
|
|
description("This tests accessing form elements by name. "
|
|
+ "IE only lets you look up names under the first name the element had and "
|
|
+ "does not respond to name changes. Firefox remembers every name item has been "
|
|
+ "accessed with, but forgets items that have not been accessed. "
|
|
+ "This test has been written to expect the Firefox behavior.");
|
|
|
|
form = document.getElementById('form');
|
|
a = document.getElementById('a');
|
|
b = document.getElementById('b');
|
|
|
|
shouldBe('form.length', '2');
|
|
shouldBe('form.original', 'a');
|
|
shouldBe('form.originalB', 'b');
|
|
shouldBe('form.second', 'undefined');
|
|
shouldBe('form.third', 'undefined');
|
|
shouldBe('form.elements.original', 'a');
|
|
shouldBe('form.elements.originalB', 'b');
|
|
shouldBe('form.elements.second', 'undefined');
|
|
shouldBe('form.elements.third', 'undefined');
|
|
|
|
debug('');
|
|
debug("change the form item a's name to thisWillBeRemembered");
|
|
debug('');
|
|
a.name="thisWillBeRemembered";
|
|
debug("get the variable value through form element");
|
|
shouldBe('form.thisWillBeRemembered', 'a');
|
|
debug('');
|
|
debug("now change the form item a's name to thisWillBeRememberedToo");
|
|
debug("access it in boolean context");
|
|
a.name="thisWillBeRememberedToo";
|
|
debug('');
|
|
if (form.thisWillBeRememberedToo)
|
|
debug('accessed form.thisWillBeRememberedToo');
|
|
debug('');
|
|
debug("now change the form item a's name to thisWillBeForgotten");
|
|
debug('');
|
|
a.name="thisWillBeForgotten";
|
|
debug("get the variable value through collection");
|
|
shouldBe('form.elements.thisWillBeForgotten', 'a');
|
|
debug('');
|
|
debug("now change the form item a's name to thisWillBeForgottenToo, but don't access it afterwards");
|
|
a.name="thisWillBeForgottenToo";
|
|
|
|
debug('');
|
|
debug("now change the form item a's name to second");
|
|
debug('');
|
|
a.name="second";
|
|
|
|
shouldBe('form.length', '2');
|
|
shouldBe('form.original', 'a');
|
|
shouldBe('form.originalB', 'b');
|
|
shouldBe('form.second', 'a');
|
|
shouldBe('form.third', 'undefined');
|
|
shouldBe('form.elements.original', 'undefined');
|
|
shouldBe('form.elements.originalB', 'b');
|
|
shouldBe('form.elements.second', 'a');
|
|
shouldBe('form.elements.third', 'undefined');
|
|
|
|
debug('');
|
|
debug("now change the form item a's name to third");
|
|
debug('');
|
|
|
|
a.name="third";
|
|
|
|
shouldBe('form.length', '2');
|
|
shouldBe('form.original', 'a');
|
|
shouldBe('form.originalB', 'b');
|
|
shouldBe('form.second', 'a');
|
|
shouldBe('form.third', 'a');
|
|
shouldBe('form.elements.original', 'undefined');
|
|
shouldBe('form.elements.originalB', 'b');
|
|
shouldBe('form.elements.second', 'undefined');
|
|
shouldBe('form.elements.third', 'a');
|
|
|
|
debug('');
|
|
debug("now change form item b's name to second");
|
|
debug('');
|
|
|
|
b.name="second";
|
|
|
|
shouldBe('form.length', '2');
|
|
shouldBe('form.original', 'a');
|
|
shouldBe('form.originalB', 'b');
|
|
shouldBe('form.second', 'b');
|
|
shouldBe('form.elements.original', 'undefined');
|
|
shouldBe('form.elements.originalB', 'undefined');
|
|
shouldBe('form.elements.second', 'b');
|
|
|
|
debug('');
|
|
debug("now change a form item b's name to third");
|
|
debug('');
|
|
|
|
form.originalB.name="third";
|
|
|
|
shouldBe('form.length', '2');
|
|
shouldBe('form.original', 'a');
|
|
shouldBe('form.originalB', 'b');
|
|
shouldBe('form.second', 'b');
|
|
shouldBe('form.third.length', '2');
|
|
shouldBe('form.third[0]', 'a');
|
|
shouldBe('form.third[1]', 'b');
|
|
shouldBe('form.elements.original', 'undefined');
|
|
shouldBe('form.elements.originalB', 'undefined');
|
|
shouldBe('form.elements.second', 'undefined');
|
|
shouldBe('form.elements.third.length', '2');
|
|
shouldBe('form.elements.third[0]', 'a');
|
|
shouldBe('form.elements.third[1]', 'b');
|
|
|
|
debug('');
|
|
debug("now change a form item b's name to fourth");
|
|
debug('');
|
|
|
|
form.originalB.name="fourth";
|
|
|
|
shouldBe('form.third', 'a');
|
|
shouldBe('form.third.length', 'undefined');
|
|
shouldBe('form.elements.third', 'a');
|
|
shouldBe('form.elements.third.length', 'undefined');
|
|
|
|
debug('');
|
|
debug("now remove element a");
|
|
debug('');
|
|
|
|
form.removeChild(a);
|
|
|
|
shouldBe('form.length', '1');
|
|
shouldBeUndefined('form.original');
|
|
shouldBe('form.originalB', 'b');
|
|
shouldBe('form.second', 'b');
|
|
shouldBeUndefined('form.third');
|
|
shouldBe('form.fourth', 'b');
|
|
shouldBe('form.elements.original', 'undefined');
|
|
shouldBe('form.elements.originalB', 'undefined');
|
|
shouldBe('form.elements.second', 'undefined');
|
|
shouldBe('form.elements.third', 'undefined');
|
|
shouldBe('form.elements.fourth', 'b');
|
|
|
|
debug('');
|
|
debug("check that we no longer remember the past names of a");
|
|
debug('');
|
|
|
|
shouldBe('form.thisWillBeForgotten', 'undefined');
|
|
shouldBe('form.thisWillBeForgottenToo', 'undefined');
|
|
shouldBeUndefined('form.thisWillBeRemembered');
|
|
shouldBeUndefined('form.thisWillBeRememberedToo');
|
|
debug('');
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<form id='form'>
|
|
<input type='hidden' id='a' name='original'>
|
|
<input type='hidden' id='b' name='originalB'>
|
|
</form>
|
|
<p id="description"></p>
|
|
<div id="console"></div>
|
|
<script>runTest();</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|