Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (!('reversed' in document.createElement('ol'))) {
- (function () {
- 'use strict';
- // Run the code on each ordered list with a "reversed" attribute.
- var lists = document.getElementsByTagName('ol'), // All ol elements
- length = lists.length, // Number of ol elements
- i, // Counter var
- j, // Counter var
- child, // ol element
- currChildren, // li elements for a given ol element
- childrenLength, // Number of li elements
- start, // Value of ol start attribute
- currCount, // Value to be used in li value attribute
- val; // Value from li value attribute
- for (i = 0; i < length; i++) {
- child = lists[i];
- if (child.getAttribute('reversed') !== null) {
- currChildren = child.getElementsByTagName('li');
- childrenLength = currChildren.length;
- start = child.getAttribute('start');
- // Check the existence of the start attribute and if it's
- // a number.
- if (start !== null && !isNaN(start)) {
- currCount = start;
- } else {
- // Do this if the start attribute is not present. The first
- // number is derived from the number of list items.
- // (Ugh; Do we need double loops to get the correct count?)
- currCount = 0;
- for (j = 0; j < childrenLength; j++) {
- if (currChildren[j].parentNode === child) {
- currCount++;
- }
- }
- }
- // Go through each list item, adding the 'value' attribute
- // plus currCount number then subtract one from currCount
- // so we're ready for the next one.
- for (j = 0; j < childrenLength; j++) {
- if (currChildren[j].parentNode === child) {
- // Per spec, if set, the value attribute should be used
- // and renumbering started from there.
- val = currChildren[j].getAttribute('value');
- if (val !== null && !isNaN(val)) {
- currCount = val;
- }
- currChildren[j].setAttribute('value', currCount);
- currCount -= 1;
- }
- }
- }
- }
- }());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement