我想打电话给使用这个调用删除类:无法读取未定义的属性“removeClass”。使用Javascript
MyUtils.removeClass(e,"empty");
但我得到的错误在我的调试器“无法读取属性‘’未定义的” removeClass。我似乎无法弄清楚我的removeClass调用中缺少的是什么。
这是我的removeClass函数。
var removeClass = function removeClass(el, classStr) {
delete el.className;
};
这里是完整的代码,HTML正在测试两种方法。
<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>
而且MyUtils功能:
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);
};
}());
错误提示'没有定义MyUtils',或者它被用在不可用。你能为片段提供更多的上下文吗? – 2014-10-29 16:05:52
我刚刚添加了调用它的HTML代码,以及完整的JavaScript MyUtils函数。 – TheCrownedPixel 2014-10-29 16:10:12
我建议看一下http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html – dreyescat 2014-10-29 16:17:28