JSFiddle - React, Tailwind, and code Playground

by gabrieleromanato

HTML

<h2>Title 1</h2>

<p>Et enim vel dolor ultrices, scelerisque rhoncus cras facilisis tincidunt, vut tincidunt odio in adipiscing? Rhoncus, porttitor, cum, nec dignissim est scelerisque tortor, porttitor? Elementum risus, augue non. Quis in, aliquet amet urna pellentesque hac massa. Nascetur! Aenean auctor etiam? Dictumst! Amet elementum vut, a ac integer! In elementum arcu ut, hac porta enim dolor placerat rhoncus adipiscing vel non ut porttitor habitasse parturient! Duis aliquam in magna porttitor pulvinar lacus hac! Phasellus et enim in augue ac turpis? Aliquam purus ac in habitasse, aliquet proin nec turpis et rhoncus, pellentesque. Vut! Integer tincidunt. Dapibus? Augue, sed pellentesque arcu, placerat, porttitor placerat nunc tincidunt pid, parturient et, turpis, tincidunt ac est phasellus massa augue, augue. Et tortor tincidunt pulvinar porttitor.</p>

<p>Et enim vel dolor ultrices, scelerisque rhoncus cras facilisis tincidunt, vut tincidunt odio in adipiscing? Rhoncus, porttitor, cum, nec dignissim est scelerisque tortor, porttitor? Elementum risus, augue non. Quis in, aliquet amet urna pellentesque hac massa. Nascetur! Aenean auctor etiam? Dictumst! Amet elementum vut, a ac integer! In elementum arcu ut, hac porta enim dolor placerat rhoncus adipiscing vel non ut porttitor habitasse parturient! Duis aliquam in magna porttitor pulvinar lacus hac! Phasellus et enim in augue ac turpis? Aliquam purus ac in habitasse, aliquet proin nec turpis et rhoncus, pellentesque. Vut! Integer tincidunt. Dapibus? Augue, sed pellentesque arcu, placerat, porttitor placerat nunc tincidunt pid, parturient et, turpis, tincidunt ac est phasellus massa augue, augue. Et tortor tincidunt pulvinar porttitor.</p>

<h2>Title 2</h2>

<p>Et enim vel dolor ultrices, scelerisque rhoncus cras facilisis tincidunt, vut tincidunt odio in adipiscing? Rhoncus, porttitor, cum, nec dignissim est scelerisque tortor, porttitor? Elementum risus, augue non. Quis in, aliquet amet urna pellentesque hac...

CSS

body {
    width: 70%;
    margin: 2em auto;
    line-height: 1.4;
}

JavaScript

var SummaryManager = {

    idify: function() {

        var headings = document.getElementsByTagName('h2'),
            len = headings.length,
            i;

        for (i = 0; i < len; i++) {

            var heading = headings[i];
            heading.setAttribute('id', 'sec-' + (i + 1));


        }

    },


    linkify: function() {

        var titles = document.getElementsByTagName('h2'),
            target = titles[0],
            list = document.createElement('ul'),
            size = titles.length,
            j, body = document.body,
            summary = document.createElement('h3');
        
        summary.appendChild(document.createTextNode('Summary'));

        for (j = 0; j < size; j++) {

            var title = titles[j];
            var anchor = title.getAttribute('id');
            var text = title.firstChild.nodeValue;
            var li = document.createElement('li');
            var a = document.createElement('a');
            a.setAttribute('href', '#' + anchor);
            a.appendChild(document.createTextNode(text));
            li.appendChild(a);
            list.appendChild(li);


        }

        body.insertBefore(list, target);
        body.insertBefore(summary, list);


    },


    init: function() {

        this.idify();
        this.linkify();


    }


};


SummaryManager.init();