I am trying to call remove class using this call:
MyUtils.removeClass(e,"empty");
But I am getting the error "Cannot read property "removeClass" of Undefined" in my debugger. I can't seem to figure out what it is that I am missing from my removeClass call.
This is my removeClass function.
var removeClass = function removeClass(el, classStr) {
delete el.className;
};
Here is the complete code, the HTML is testing the two methods.
<body>
<div id="foo" class="column empty">Halloween!</div>
<script type="text/javascript" src="utils.js"></script>
<script>
var e = document.getElementById("foo");
var q = function (s){ document.write("<div>"+s+"</div>"); }
q("initial (" + e.className+")");
MyUtils.removeClass(e,"empty");
q("removed empty (" + e.className+")");
MyUtils.addClass(e,"column");
q("added column again (" + e.className+")");
MyUtils.removeClass(e,"scary");
q("removed scary (" + e.className+")");
MyUtils.addClass(e,"lum");
q("added lum (" + e.className+")");
MyUtils.removeClass(e,"column");
q("removed column (" + e.className+")");
MyUtils.addClass(e,"foo");
q("added foo (" + e.className+")");
MyUtils.addClass(e,"bar");
q("added bar (" + e.className+")");
</script>
</body>
And the MyUtils function:
var MyUtils = (function() {
function addClass(el, classStr) {
if(el.className !== classStr) {
el.className = classStr;
}
};
var removeClass = function (el, classStr) {
delete el.className;
};
var walkTheDom = function walkTheDom(el, f) {
f(el);
el = el.firstChild;
while(el) {
walkTheDom(el,f);
el = el.nextSibling;
}
};
var getElemebtsByClassName = function getElementsByClassName(c) {
var results = [];
var re = new RegExp("\\b"+c+"\\b");
var f = function (el) {
if(el.nodeType === 1) {
if(el.className.search(re) !== -1) {
results.push(el);
}
}
};
walkTheDom(document.body, f);
};
}());