I have this chunk of code which is using jQuery and I want it to be a vanilla javascript.
I used self executable function and got rid of the $
. Well it stops working as soon as I get rid of the first $
before the anonymous function and rewrite it in vanilla JS...
$(function() {
$("#toc").append("<div id='generated-toc'></div>");
$("#generated-toc").tocify({
extendPage: true,
context: "#content",
highlightOnScroll: true,
hideEffect: "slideUp",
hashGenerator: function(text, element) {
return $(element).attr("id");
},
smoothScroll: false,
theme: "none",
selectors: $("#content").has("h1").size() > 0 ? "h1,h2,h3,h4,h5" : "h2,h3,h4,h5",
ignoreSelector: ".discrete"
});
var handleTocOnResize = function() {
if ($(document).width() < 768) {
$("#generated-toc").hide();
$(".sectlevel0").show();
$(".sectlevel1").show();
} else {
$("#generated-toc").show();
$(".sectlevel0").hide();
$(".sectlevel1").hide();
}
}
$(window).resize(handleTocOnResize);
handleTocOnResize();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
So I write it like this...But for some reason(s) it isn 't working...
(function() {
document.getElementById("toc").append("<div id='generated-toc'></div>");
document.getElementById("generated-toc").tocify({
extendPage: true,
context: "#content",
highlightOnScroll: true,
hideEffect: "slideUp",
hashGenerator: function(text, element) {
return element.attr("id");
},
smoothScroll: false,
theme: "none",
selectors: document.getElementById("content").has("h1").size() > 0 ? "h1,h2,h3,h4,h5" : "h2,h3,h4,h5",
ignoreSelector: ".discrete"
});
var handleTocOnResize = function() {
if (document.width() < 768) {
document.getElementsByName("generated-toc").hide();
document.getElementsByClassName("sectlevel0").show();
document.getElementsByClassName("sectlevel1").show();
} else {
document.getElementById("generated-toc").show();
document.getElementsByClassName("sectlevel0").hide();
document.getElementsByClassName("sectlevel1").hide();
}
}
window.resize(handleTocOnResize);
handleTocOnResize();
})();