| <!doctype html> |
| <meta charset="utf-8"> |
| <title>form.elements: indexed</title> |
| <link rel="author" title="Ivan.Yang" href="mailto:jsyangwenjie@gmail.com"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <div id="test"> |
| <form id=form> |
| <input type="radio" name="radio1" id="r1" value=1> |
| <input type="radio" name="radio2" id="r2" value=2> |
| </form> |
| </div> |
| <script> |
| test(function() { |
| var form = document.getElementById("form"); |
| assert_equals(form[0], document.getElementById("r1")); |
| assert_equals(form[1], document.getElementById("r2")); |
| assert_equals(form[2], undefined); |
| assert_equals(form[-1], undefined); |
| }, "form.elements should be accessed correctly by index") |
| |
| test(function(){ |
| var form = document.getElementById("form"); |
| var old_item = form[0]; |
| var old_desc = Object.getOwnPropertyDescriptor(form, 0); |
| assert_equals(old_desc.value, old_item); |
| assert_true(old_desc.enumerable); |
| assert_true(old_desc.configurable); |
| assert_false(old_desc.writable); |
| |
| Object.prototype[0] = 5; |
| this.add_cleanup(function () { delete Object.prototype[0]; }); |
| assert_equals(form[0], old_item); |
| |
| delete form[0]; |
| assert_equals(form[0], old_item); |
| |
| assert_throws(new TypeError(), function() { |
| "use strict"; |
| delete form[0]; |
| }); |
| assert_equals(form[0], old_item); |
| }, 'Trying to delete an indexed property name should never work'); |
| </script> |