Skip to content

Instantly share code, notes, and snippets.

@juanbrujo
Last active August 29, 2015 14:23
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save juanbrujo/261aff71bb8e7b489a84 to your computer and use it in GitHub Desktop.
Save juanbrujo/261aff71bb8e7b489a84 to your computer and use it in GitHub Desktop.
createElement JavaScript function

#createElement(element,attribute,inner);

use:

createElement("tag","[attr:val][attr:val]",[element1,"some text",element2,element3,"or some text again :)"]);

basic:

createElement("div");
// <div></div>

advanced:

createElement("a","[href:http://google.com][style:color:#FFF;background:#333;]","Google");
// <a href="http://google.com" style="color:#FFF;background:#333;">Google</a>

nesting:

var google = createElement("a","[href:http://google.com]","google"),
    youtube = createElement("a","[href:http://youtube.com]","youtube"),
    facebook = createElement("a","[href:http://facebook.com]","facebook"),
    links_conteiner = createElement("div","[id:links]",[google,youtube,facebook]);
// <div id="links">
//    <a href="http://google.com">google</a>
//    <a href="http://youtube.com">youtube</a>
//    <a href="http://facebook.com">facebook</a>
// </div>
/**
* createElement();
* basic use: createElement("div");
* // <div></div>
* advanced use: createElement("a","[href:http://google.com][style:color:#FFF;background:#333;]","Google");
* // <a href="http://google.com" style="color:#FFF;background:#333;">Google</a>
*/
function createElement(name, val, result) {
if (typeof name === "undefined") {
return false;
}
if (typeof val === "undefined") {
val = "";
}
if (typeof result === "undefined") {
result = "";
}
var ret = document.createElement(name);
if (val.length > 1 && (val[0] == "[" && val[val.length - 1] == "]")) {
var values = val.split("][");
values[0] = values[0].substr(1);
values[values.length - 1] = values[values.length - 1].substr(0, values[values.length - 1].length - 1);
var i = 0;
var valuesLen = values.length;
for (;i < valuesLen;i++) {
var key;
var width = "";
var colonIndex = values[i].indexOf(":");
if (colonIndex > 0) {
key = values[i].substr(0, colonIndex);
width = values[i].substr(colonIndex + 1);
} else {
key = values[i].substr(0);
}
ret.setAttribute(key, width);
}
}
if (Array.isArray(result)) {
i = 0;
for (;i < result.length;i++) {
if (result[i].tagName) {
ret.appendChild(result[i]);
} else {
ret.appendChild(document.createTextNode(result[i]));
}
}
} else {
if (result.tagName) {
ret.appendChild(result);
} else {
ret.innerHTML = result;
}
}
return ret;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment