create-dom.js 753 B

123456789101112131415161718192021222324252627282930
  1. /**
  2. * 创建DOM 节点
  3. * @param {String} str Dom 字符串
  4. * @return {HTMLElement} DOM 节点
  5. */
  6. var TABLE = document.createElement('table');
  7. var TABLE_TR = document.createElement('tr');
  8. var FRAGMENT_REG = /^\s*<(\w+|!)[^>]*>/;
  9. var CONTAINERS = {
  10. tr: document.createElement('tbody'),
  11. tbody: TABLE,
  12. thead: TABLE,
  13. tfoot: TABLE,
  14. td: TABLE_TR,
  15. th: TABLE_TR,
  16. '*': document.createElement('div')
  17. };
  18. module.exports = function createDom(str) {
  19. var name = FRAGMENT_REG.test(str) && RegExp.$1;
  20. if (!(name in CONTAINERS)) {
  21. name = '*';
  22. }
  23. var container = CONTAINERS[name];
  24. str = str.replace(/(^\s*)|(\s*$)/g, '');
  25. container.innerHTML = '' + str;
  26. var dom = container.childNodes[0];
  27. container.removeChild(dom);
  28. return dom;
  29. };