| <!doctype html> |
| <meta charset=utf-8> |
| <title>HTMLSelectElement selectedIndex</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id=log></div> |
| |
| <form id=form> |
| <select id=empty></select> |
| |
| <select id=default> |
| <option></option> |
| <option></option> |
| <option></option> |
| <option></option> |
| <option></option> |
| </select> |
| |
| <select id=disabled> |
| <option disabled></option> |
| <option></option> |
| </select> |
| |
| <select id=selected> |
| <option></option> |
| <option selected></option> |
| </select> |
| |
| <select id=display-none> |
| <option style="display:none"></option> |
| <option></option> |
| </select> |
| |
| <select id=minus-one> |
| <option value=1>1</option> |
| <option value=2>2</option> |
| </select> |
| </form> |
| |
| <script> |
| function assertSelectedIndex(select, value) { |
| assert_equals(select.selectedIndex, value); |
| assert_equals(select.options.selectedIndex, value); |
| } |
| |
| function assertSelectValue(select, value) { |
| assert_equals(select.value, value); |
| } |
| |
| test(function () { |
| var select = document.getElementById('empty'); |
| assertSelectedIndex(select, -1); |
| }, "get empty"); |
| |
| test(function () { |
| var select = document.getElementById('default'); |
| assertSelectedIndex(select, 0); |
| }, "get default"); |
| |
| test(function () { |
| var select = document.getElementById('disabled'); |
| assertSelectedIndex(select, 1); |
| }, "get disabled"); |
| |
| test(function () { |
| var select = document.getElementById('selected'); |
| assertSelectedIndex(select, 1); |
| }, "get unselected"); |
| |
| test(function () { |
| var select = document.getElementById('empty'); |
| select.selectedIndex = 1; |
| assertSelectedIndex(select, -1); |
| }, "set empty (HTMLSelectElement)"); |
| |
| test(function () { |
| var select = document.getElementById('empty'); |
| select.options.selectedIndex = 1; |
| assertSelectedIndex(select, -1); |
| }, "set empty (HTMLOptionsCollection)"); |
| |
| test(function () { |
| var select = document.getElementById('default'); |
| assertSelectedIndex(select, 0); |
| select.selectedIndex = 2; |
| assertSelectedIndex(select, 2); |
| this.add_cleanup(() => { select.selectedIndex = 0; }); |
| }, "set (HTMLSelectElement)"); |
| |
| test(function () { |
| var select = document.getElementById('default'); |
| assertSelectedIndex(select, 0); |
| select.options.selectedIndex = 2; |
| assertSelectedIndex(select, 2); |
| this.add_cleanup(() => { select.selectedIndex = 0; }); |
| }, "set (HTMLOptionsCollection)"); |
| |
| test(function () { |
| var select = document.getElementById('selected'); |
| var form = document.getElementById('form'); |
| assertSelectedIndex(select, 1); |
| select.selectedIndex = 0; |
| assertSelectedIndex(select, 0); |
| form.reset(); |
| assertSelectedIndex(select, 1); |
| }, "set and reset (HTMLSelectElement)"); |
| |
| test(function () { |
| var select = document.getElementById('selected'); |
| var form = document.getElementById('form'); |
| assertSelectedIndex(select, 1); |
| select.options.selectedIndex = 0; |
| assertSelectedIndex(select, 0); |
| form.reset(); |
| assertSelectedIndex(select, 1); |
| }, "set and reset (HTMLOptionsCollection)"); |
| |
| test(function () { |
| var select = document.getElementById('display-none'); |
| assertSelectedIndex(select, 0); |
| }, "get display:none"); |
| |
| test(function () { |
| var select = document.getElementById('display-none'); |
| select.offsetTop; // force rendering |
| assertSelectedIndex(select, 0); |
| select.options[1].selected = true; |
| assertSelectedIndex(select, 1); |
| select.options[1].selected = false; |
| assertSelectedIndex(select, 0); |
| }, "reset to display:none"); |
| |
| test(function() { |
| var select = document.getElementById("minus-one"); |
| assertSelectedIndex(select, 0); |
| |
| select.selectedIndex = -1; |
| |
| assertSelectedIndex(select, -1); |
| assertSelectValue(select, ""); |
| |
| }, "set selectedIndex=-1"); |
| </script> |