Skip to content

Instantly share code, notes, and snippets.

Created April 12, 2012 12:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/2366834 to your computer and use it in GitHub Desktop.
Save anonymous/2366834 to your computer and use it in GitHub Desktop.
window.HTMLElementFunctionFactory = function (_elementName){
var nameSpace = {};
for(var i = 0; i < arguments.length; i++){
var elementName = arguments[i];
var defaultOptions = {};
if(Array.prototype.isPrototypeOf(elementName)){
defaultOptions = elementName[1];
elementName = elementName[0];
}
if(elementName == "text"){
var f = function(){ return function(_text){
return document.createTextNode(_text)
}; };
}else{
var f = function (){
var c_elementName = elementName;
var c_defaultOptions = defaultOptions;
return function(){
var retval = document.createElement(c_elementName);
for(var j = 0;j < arguments.length; j++){
for(var attr_name in c_defaultOptions){
retval.setAttribute(attr_name, c_defaultOptions[attr_name]);
}
if(arguments[j].nodeType){
retval.appendChild(arguments[j]);
} else {
for(var attr_name in arguments[j]){
retval.setAttribute(attr_name, arguments[j][attr_name]);
}
}
}
return retval;
}}
}
nameSpace[elementName] = f();
}
return nameSpace;
};
HTMLElementFunctionFactory("div", "span", "p", "hr", "input", "tr", "td", "th", "img", "ul", "li", "br", "textarea", "iframe", "script", "text");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment