fork download
  1. // вспомогательная функция для создания ноды
  2. function createNode(name, klasses) {
  3. var n = document.createElement(name);
  4. n.className = klasses;
  5. return n;
  6. }
  7.  
  8. function l(x) {
  9. console.dir(x);
  10. }
  11.  
  12. function hasClass(node, cls) {
  13. var pattern = "\\b" + cls + "\\b";
  14. var regEx = new RegExp(pattern, "gi");
  15. return regEx.test(node.className);
  16. }
  17.  
  18. function addClass(node, cls) {
  19. if (hasClass(node, cls)) {
  20. return null;
  21. }
  22. node.className += " " + cls;
  23. return node;
  24. }
  25.  
  26. function removeClass(node, cls) {
  27. if (!hasClass(node, cls)) {
  28. return null;
  29. }
  30. var pattern = "\\b" + cls + "\\b";
  31. var regEx = new RegExp(pattern, "gi");
  32. var temp = node.className.replace(regEx, "");
  33. temp = temp.replace(/\s{2,}/, " ").trim();
  34. node.className = temp;
  35. return node;
  36. }
  37.  
  38. l(hasClass(createNode('div', 'test'), 'test')); // true
  39. l(hasClass(createNode('div', 'test'), 'tes')); // false
  40.  
  41. l(hasClass(createNode('div', 'test1 test2'), 'tes')); // false
  42. l(hasClass(createNode('div', 'test1 test2'), 'test1')); // true
  43.  
  44. l(addClass(createNode('div', 'test1'), 'test2'));
  45. l(addClass(createNode('div', 'test1'), 'test1'));
  46.  
  47. l(removeClass(createNode('div', 'test1 test2 test3'), 'test1'));
  48. l(removeClass(createNode('div', 'test1 test2 test3'), 'test2'));
  49. l(removeClass(createNode('div', 'test1'), 'test2'));
  50. l(removeClass(createNode('div', 'test1'), 'test1'));
Runtime error #stdin #stdout #stderr 0.05s 44992KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
/home/YDjUGw/prog.js:3
    var n = document.createElement(name);
            ^
ReferenceError: document is not defined
    at createNode (/home/YDjUGw/prog.js:3:13)
    at Object.<anonymous> (/home/YDjUGw/prog.js:38:12)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3