I had a project to create table of contents of huge text files with .html format, it was thousands. Then I’ve developed a JavaScript Table of Contents generator that detect some text to be included as TOC.
Watch this video to see my demonstration on how to use it:
Here is the source code (you must run the program through local web server):
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>TOCLink Generator by Zofia Kreasi</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> <style> body{ font-family: arial; } div { padding: 10px; margin-bottom: 10px; } button { padding: 10px; } input { display: block; padding: 10px; margin-bottom: 10px; width: 75%; } </style> </head> <body> <div> <iframe id="myframe" style="display: none;"></iframe> <h1>TOCLink Generator</h1> <p>Generating table of contents with links.</p> <div id="result" style="height: 200px; overflow-y: auto; border: 1px solid green; font-size: 9px;">Results go here...</div> <button onclick="indexit()">Start Indexing</button> <p>Status: <span id="statusmessage">Ready.</span></p> </div> <script> var book = "myfiles"; //folder name of text files var firstPage = 1; // first page's number var lastPage = 10; // last page's number var content = []; var currentPage = firstPage; function indexit(){ if(currentPage < lastPage){ document.getElementById("result").innerHTML = "Searching..."; document.getElementById("myframe").src = book + "/page_" + currentPage + ".html"; document.getElementById("myframe").onload = function(){ var dW = document.getElementById("myframe").contentWindow; var dD = document.getElementById("myframe").contentDocument; var dDContent = ""; for(var s = 0; s < dD.getElementsByTagName("p").length; s++){ if(dD.getElementsByTagName("p")[s].innerHTML.toLowerCase().indexOf("book") > -1){ dDContent += "<a style='font-size: 20px; color: green;' href='" + book + "/page_" + currentPage + ".html'>" + dD.getElementsByTagName("p")[s].innerHTML + "</a><br>"; } if(dD.getElementsByTagName("p")[s].innerHTML.toLowerCase().indexOf("story") > -1){ dDContent += "<a style='font-size: 14px; color: blue;' href='" + book + "/page_" + currentPage + ".html'>" + dD.getElementsByTagName("p")[s].innerHTML + "</a><br>"; } } if(dDContent != "") content.push(dDContent); document.getElementById("statusmessage").innerHTML = "Indexing page " + currentPage; currentPage++; indexit(); }; } else setTimeout(function(){ var tempItemDivs = ""; for(var i = 0; i < content.length; i++){ tempItemDivs += content[i]; } document.getElementById("result").innerHTML = tempItemDivs; document.getElementById("statusmessage").innerHTML = "Done!"; content = []; currentPage = firstPage; }, 100) } </script> </body> </html>
loading...