function nbInit($s){ function nBind(callback, prop, direction){ direction = direction || "write"; for (var selector in $s){ var result = []; selector = prop || selector; //change selector to passed if it var items = [document.getElementById(selector)]; items = items[0] ? items : document.querySelectorAll(selector); items = items.length ? items : document.getElementsByName(selector); items = items.length ? items : document.getElementsByClassName(selector); for (var i=0,item=items[i];i set attrs on the tag for (var key in value){ item[key] = value[key]; } item.nbData = value; return; } if (keyExists && "value" in item){ //if hash key-value pair. Usable for select > option item.value = key; } if (typeof value === "boolean" && item.type !== 'checkbox'){ //boolean means visibility, except checkbox if (value){ item.style.display = "originalDisplay" in item ? item.originalDisplay : ""; } else { item.originalDisplay = item.style.display; item.style.display = "none"; } return; } if (item.type === 'radio' && !keyExists){ //radiogroup set if (item.value === value){ //only item with right value to set item.checked = true; } return; } if (item.type === 'checkbox' && !keyExists){ //checkbox setting by boolean item.checked = !!value; return; } if (item.children.length && typeof value === "object"){ //recursive fill item.copy = item.copy || item.cloneNode(true); //original node item.nbData = value; var originalChildren = item.copy.children; var i = 0; var isArray = Array.isArray(value); //different logic for array and objects if (!isArray){ // if first key in array find as class name in one of subnodes var classFound = false; for (var key in value){ if (item.getElementsByClassName(key).length){ classFound = true; break; } } if (classFound){ for (var key in value){ var classSubnodes = item.getElementsByClassName(key); for (var i=0;i set attrs on the tag for (var key in value){ value[key] = item[key]; } return value; } if (!isArray && typeof value === 'object'){ //hash array on single leaf node -> set attrs on the tag value = {}; for (var i=0;i