<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();
Please Whitelist JSFiddle in your content blocker.
Help keep JSFiddle free for always by one of two ways:
Whitelist JSFiddle in your content blocker (two clicks)
Go PRO and get access to additional PRO features →
Join the 4+ million users, and keep the JSFiddle dream alive.
Ad-free
All ads in the editor and listing pages are turned completely off.
Fiddle Pages
Your fiddles accessible under a custom domain and a vanity path - the simplest hosting for your personal project.
Use pre-released features
You get to try and use features (like the Palette Color Generator) months before everyone else.
Fiddle collections
Sort and categorize your Fiddles into multiple collections.
Private collections and fiddles
You can make as many Private Fiddles, and Private Collections as you wish!
Get Fiddle Pages with PRO
Your fiddles accessible under a custom domain and a vanity path - the simplest hosting for your personal project.