From 083e5cbec5e156c4719c002fd2effaa0a1bb4c8b Mon Sep 17 00:00:00 2001 From: rmrenner Date: Fri, 23 Nov 2018 08:25:10 -0600 Subject: [PATCH] Bugfix: extra space left behind in class field `add_class` was leaving behind an extra space on mouseout --- highlight-lisp.js | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/highlight-lisp.js b/highlight-lisp.js index 436dc3d..cf09b4b 100644 --- a/highlight-lisp.js +++ b/highlight-lisp.js @@ -491,13 +491,25 @@ var highlight_lisp = function() { } }; - var add_class = function(el, classname, add) - { - if(!el) return; - el.className = el.className.replace(new RegExp(classname, 'g'), ''); - if(add) el.className += ' '+classname; - }; - + var toggle_class = function(element, classname) + { + if (element.classList) + { element.classList.toggle(classname); } + else + { + //for IE9 + var classes = element.className.split(" "); + var i = classes.indexOf(classname); + if (i >= 0) + { classes.splice(i, 1); } + else + { + classes.push(classname); + element.className = classes.join(" "); + } + } + } + var codes = document.getElementsByClassName('hl-highlighted'); for(var i = 0; i < codes.length; i++) { @@ -507,8 +519,8 @@ var highlight_lisp = function() { var hovered = e.target; if(!is_paren(hovered)) return; var match = find_match(hovered); - add_class(hovered, 'active', add); - add_class(match, 'active', add); + toggle_class(hovered, 'active'); + toggle_class(match, 'active'); }; code.addEventListener('mouseover', listener.bind(this, true)); code.addEventListener('mouseout', listener.bind(this, false));