diff --git a/src/dom/dom.js b/src/dom/dom.js index 5bd1781f..c9340d44 100644 --- a/src/dom/dom.js +++ b/src/dom/dom.js @@ -11,6 +11,10 @@ class dom { * @param {string} classes CSS classes to add. */ static addClasses(element, classes) { + if (!core.isObject(element) || !core.isString(classes)) { + return; + } + if ('classList' in element) { dom.addClassesWithNative_(element, classes); } else { @@ -297,6 +301,10 @@ class dom { * @param {string} classes CSS classes to remove. */ static removeClasses(element, classes) { + if (!core.isObject(element) || !core.isString(classes)) { + return; + } + if ('classList' in element) { dom.removeClassesWithNative_(element, classes); } else { diff --git a/test/src/dom/dom.js b/test/src/dom/dom.js index a5ad3426..a6cdb6d6 100644 --- a/test/src/dom/dom.js +++ b/test/src/dom/dom.js @@ -51,6 +51,16 @@ describe('dom', function() { dom.removeClassesWithoutNative_(element, 'class2'); assert.ok(!dom.hasClass(element, 'class2')); }); + + it('should do nothing if element or classes are not object and string', function() { + var element = document.createElement('div'); + dom.addClasses(element); + assert.strictEqual(element.className, ''); + + dom.addClasses(element, 'class1'); + dom.removeClasses(element); + assert.isTrue(dom.hasClass(element, 'class1')); + }); }); describe('manipulation', function() {