HTMLCollection-own-props.html (3170B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>HTMLCollection getters and own properties</title> 4 <script src=/resources/testharness.js></script> 5 <script src=/resources/testharnessreport.js></script> 6 <div id=log></div> 7 <script> 8 function append(t, tag, name) { 9 var element = document.createElement(tag); 10 if (name) { 11 element.id = name; 12 } 13 document.body.appendChild(element); 14 t.add_cleanup(function() { element.remove(); }); 15 return element; 16 } 17 18 test(function() { 19 var name = "named", tag = "a"; 20 var c = document.getElementsByTagName(tag); 21 var element = append(this, tag, name); 22 assert_equals(c[name], element); 23 c[name] = "foo"; 24 assert_equals(c[name], element); 25 }, "Setting non-array index while named property exists (loose)"); 26 27 test(function() { 28 "use strict"; 29 var name = "named", tag = "b"; 30 var c = document.getElementsByTagName(tag); 31 var element = append(this, tag, name); 32 assert_equals(c[name], element); 33 assert_throws_js(TypeError, function() { 34 c[name] = "foo"; 35 }); 36 assert_equals(c[name], element); 37 }, "Setting non-array index while named property exists (strict)"); 38 39 test(function() { 40 var name = "named", tag = "i"; 41 var c = document.getElementsByTagName(tag); 42 assert_equals(c[name], undefined); 43 c[name] = "foo"; 44 assert_equals(c[name], "foo"); 45 46 var element = append(this, tag, name); 47 assert_equals(c[name], "foo"); 48 assert_equals(c.namedItem(name), element); 49 }, "Setting non-array index while named property doesn't exist (loose)"); 50 51 test(function() { 52 "use strict"; 53 var name = "named", tag = "p"; 54 var c = document.getElementsByTagName(tag); 55 assert_equals(c[name], undefined); 56 c[name] = "foo"; 57 assert_equals(c[name], "foo"); 58 59 var element = append(this, tag, name); 60 assert_equals(c[name], "foo"); 61 assert_equals(c.namedItem(name), element); 62 }, "Setting non-array index while named property doesn't exist (strict)"); 63 64 test(function() { 65 var tag = "q"; 66 var c = document.getElementsByTagName(tag); 67 var element = append(this, tag); 68 assert_equals(c[0], element); 69 c[0] = "foo"; 70 assert_equals(c[0], element); 71 }, "Setting array index while indexed property exists (loose)"); 72 73 test(function() { 74 "use strict"; 75 var tag = "s"; 76 var c = document.getElementsByTagName(tag); 77 var element = append(this, tag); 78 assert_equals(c[0], element); 79 assert_throws_js(TypeError, function() { 80 c[0] = "foo"; 81 }); 82 assert_equals(c[0], element); 83 }, "Setting array index while indexed property exists (strict)"); 84 85 test(function() { 86 var tag = "u"; 87 var c = document.getElementsByTagName(tag); 88 assert_equals(c[0], undefined); 89 c[0] = "foo"; 90 assert_equals(c[0], undefined); 91 92 var element = append(this, tag); 93 assert_equals(c[0], element); 94 }, "Setting array index while indexed property doesn't exist (loose)"); 95 96 test(function() { 97 "use strict"; 98 var tag = "u"; 99 var c = document.getElementsByTagName(tag); 100 assert_equals(c[0], undefined); 101 assert_throws_js(TypeError, function() { 102 c[0] = "foo"; 103 }); 104 assert_equals(c[0], undefined); 105 106 var element = append(this, tag); 107 assert_equals(c[0], element); 108 }, "Setting array index while indexed property doesn't exist (strict)"); 109 </script>