begin process at 2012 05 28 13:34:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > DOMBUILDER

DOMBUILDER


 Information sur la source

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :innerHTML, dombuider, insertion, append, prepend Niveau :Initié Date de création :04/10/2009 Date de mise à jour :11/11/2009 23:56:48 Vu / téléchargé :3 206 / 109

Auteur : Kimjoa

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Pour créer ou insérer des éléments on peux passé comme argument soit une string, soit un n½ud , soit une collection (nodListe), soit une objet, soit un tableau (qui lui même peux prendre toute ses valeurs...).

Pour setStyle ont peux passé soit un objet dont les clé seront les attribut de style au format js, ou une string, comme dans les css.

getAttribute et setAttribute normalise l'accession et la modification des attributs

Voici la list des fonctions:
- getHTML
- getOutherHTML
- setHTML
- append / insertIntoLast
- prepend / insertBefore
- insertIntoFirst
- insertAfter
- createElement
- getAttribute
- setAttribute
- removeAttribute
- getStyle
- setStyle

Source

  • (function(spaceName){
  • /*------------------------priver-----------------------*/
  • //element servant a créer les élément html, via innerHTML
  • var element = document.createElement('div'),
  • isIE = /msie/i.test(navigator.userAgent),
  • parent;//parent référencant tout les élément créer depuis une cahine de caractere
  • //céer des élements depuis une string
  • function createHTML(str, toReturn){
  • element.innerHTML = '';
  • var wrap = /^<(thead|tbody|tfoot|colg|cap)/i.test(str) ? [ 1, "<table>", "</table>" ]
  • : /^<tr/i.test(str) ? [ 2, "<table><tbody>", "</tbody></table>" ]
  • : /^(<td|<th)/i.test(str) ? [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ]
  • : /^<opt/i.test(str) ? [ 1, "<select multiple='multiple'>", "</select>" ]
  • : /^<leg/i.test(str) ? [ 1, "<fieldset>", "</fieldset>" ]
  • : /^<col/i.test(str) ? [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] : null;
  • parent = element;
  • if(wrap){
  • parent.innerHTML = wrap[1] + str + wrap[2];
  • //on définit ele, le dernier parent
  • while (wrap[0]--)
  • parent = parent.lastChild;
  • }else
  • //sinon on remplit dans la reférence de element de la chaine html
  • parent.innerHTML = str;
  • if(toReturn){
  • var ret = Array.prototype.slice.call(parent.childNodes);
  • return ret.length - 1 ? ret : ret[0];
  • }
  • }
  • //céer des élements via une syntaxe JSON
  • function createJSON(object){
  • var tag = object.tag,
  • items = object.items,
  • el;
  • delete object.tag;
  • delete object.items;
  • if(isIE)if(tag.toLowerCase() == 'input'){
  • el = document.createElement('<input type="'+object.type+'" '+(object.checked ? 'checked="checked"' : '')+(object.name ? 'name="'+object.name+'"' : '')+'>');
  • }else if(tag.toLowerCase() == 'select'){
  • el = document.createElement('<select '+(object.multiple ? 'multiple="multiple"' : '')+(object.name ? 'name="'+object.name+'"' : '')+'>');
  • }else if(tag.toLowerCase() == 'textarea')
  • el = document.createElement('<textarea '+(object.name ? 'name="'+object.name+'"' : '')+'></textarea>');
  • el = el || document.createElement(tag);
  • for(var i in object)
  • spaceName.setAttribute(el, i, object[i]);
  • if(items)
  • getFuncInsertion(items)(el, items);
  • object.tag = tag;
  • object.items = items;
  • return el;
  • }
  • //céer des élements via une syntaxe JSON
  • function createArray(array){
  • for(var i = 0, l = array.length, ret = []; i < l; i++){
  • ret[i] = getFunctionCreate(array[i])(array[i], true);}
  • return ret;
  • }
  • //retourne la fonction de création en fonction du type fournit
  • function getFunctionCreate(els){
  • return typeof els == 'string' ? createHTML : els.constructor == Object ? createJSON : createArray;
  • }
  • //inser un élement a partir d'une sible et d'une position(before)
  • function insert(el, sible, before){
  • if(before){
  • sible.parentNode.insertBefore(el, sible);
  • }else sible.appendChild(el);
  • }
  • //insertion des élement via une string
  • function insertHTML(el, str, before){
  • createHTML(str);
  • var elem;
  • while (parent.childNodes[0]){
  • elem = parent.removeChild(parent.childNodes[0]);
  • insert(elem, el, before);
  • }
  • }
  • //insertion des élement via une JSON
  • function insertJSON(el, object, before){
  • var els = createJSON(object);
  • insert(els, el, before);
  • }
  • //insertion des élement via un noeud HTML
  • function insertNod(el, nod, before){
  • insert(nod, el, before);
  • }
  • //insertion des élements via un tableau ou une collection
  • function insertArray(el, array, before){
  • for(var i = 0, l = array.length; i < l; i++)
  • getFuncInsertion(array[i])(el, array[i], before);
  • }
  • //retourne la fonction d'insertion en fonction du type fournit
  • function getFuncInsertion(els){
  • return typeof els == 'string' ? insertHTML : els.constructor == Object ? insertJSON : els.length ? insertArray : insertNod;
  • }
  • function setOpacity(element,value) {
  • value = value < 0.00001 ? 0 : value;
  • if(isIE){
  • element.style.filter = 'alpha(opacity=' + value * 100+ ')';
  • }else
  • element.style.opacity = value;
  • };
  • //création d'un objet d'acces rapide au propriété accéssible uniquement comme propriété du noeud
  • var camelGroupe = ['colSpan', 'rowSpan', 'vAlign', 'dateTime', 'accessKey', 'tabIndex', 'encType', 'maxLength', 'readOnly', 'longDesc', 'cellPadding', 'cellSpacing', 'frameBorder', 'useMap', 'id'];
  • for (var i = 0, c, isCamel = {'class' : 'className', 'className' : 'className', id : 'id', 'for' : 'htmlFor'}; c = camelGroupe[i]; i++)
  • isCamel[c.toLowerCase()] = c;
  • //création d'un objet d'acces rapide au propriété accéssible uniquement comme propriété du noeud, et dont dont les valeur de typoe bool doivent avoir une notation XHTML
  • var boolGroupe = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
  • for (var i = 0, c, isBool = {}; c = boolGroupe[i]; i++)
  • isBool[c] = c;
  • /*------------------------publique-----------------------*/
  • //par forcement nécessaire, mais pour etre en 'harmonie' avec toute les autres fonctions
  • spaceName.getHTML = function(el){
  • return el.innerHTML;
  • }
  • //fonction original de jdmcreator -> http://www.javascriptfr.com/codes/EMULER-OUTERHTML_50599.aspx
  • spaceName.getOutherHTML = function(el){
  • element.innerHTML = '';
  • element.appendChild(el.cloneNode(true));
  • return element.innerHTML;
  • }
  • spaceName.getAttribute = function(el, attr){
  • if(attr == 'style')
  • return el.style.cssText;
  • var camel, bool;
  • return r = isIE || (camel = isCamel[attr]) || (bool = isBool[attr]) ? el[camel || bool || attr] : el.getAttribute(attr);
  • }
  • spaceName.setAttribute = function(el, attr, value){
  • if(attr == 'style')
  • return spaceName.setStyle(el, value);
  • var camel = isCamel[attr],
  • bool = isBool[attr];
  • if(bool && !value){
  • el[bool] = null;
  • }else if(isIE || camel || bool){
  • el[camel || bool || attr] = bool || value;
  • }else el.setAttribute(attr, value);
  • }
  • spaceName.removeAttribute = function(el, attr){
  • if(attr == 'style'){
  • el.style.cssText = '';
  • return;
  • }
  • var camel = isCamel[attr],
  • bool = isBool[attr];
  • if(isIE || camel || bool){
  • el[camel || bool || attr] = null;
  • }else el.removeAttribute(attr);
  • }
  • spaceName.setStyle = function(el, style){
  • if (typeof style == 'string'){
  • el.style.cssText += ';' + style;
  • if(style.indexOf('opacity') > -1)
  • setOpacity(el, style.match(/opacity:\s*(\d?\.?\d*)/)[1]);
  • }else for(var i in style){
  • if(i == 'opacity'){
  • setOpacity(el, style[i]);
  • }else el.style[i == 'float' ? 'cssFloat': i] = style[i];
  • }
  • }
  • spaceName.setHTML = function(el, els){
  • el.innerHTML = '';
  • getFuncInsertion(els)(el, els);
  • }
  • spaceName.append = spaceName.insertIntoLast = function(el, els){
  • getFuncInsertion(els)(el, els);
  • }
  • spaceName.prepend = spaceName.insertBefore = function(el, els){
  • getFuncInsertion(els)(el, els, true);
  • }
  • spaceName.insertIntoFirst = function(el, els){
  • var ele;
  • getFuncInsertion(els)((ele = el.childNodes[0]) ? ele : el, els, !!ele);
  • }
  • spaceName.insertAfter = function(el, els){
  • var ele;
  • getFuncInsertion(els)((ele = el.nextSibling) ? ele : el.parentNode, els, !!ele);
  • }
  • spaceName.createElement = function(els){
  • return getFunctionCreate(els)(els);
  • }
  • })(window)//->remplacer windows par votre espace de nom
(function(spaceName){
    /*------------------------priver-----------------------*/
    
    //element servant a créer les élément html, via innerHTML
    var element = document.createElement('div'),
        isIE = /msie/i.test(navigator.userAgent),
        parent;//parent référencant tout les élément créer depuis une cahine de caractere
    
    
    //céer des élements depuis une string
    function createHTML(str, toReturn){
        element.innerHTML = '';
        
        var wrap = /^<(thead|tbody|tfoot|colg|cap)/i.test(str) ? [ 1, "<table>", "</table>" ]
            : /^<tr/i.test(str) ? [ 2, "<table><tbody>", "</tbody></table>" ]
            : /^(<td|<th)/i.test(str) ? [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] 
            : /^<opt/i.test(str) ? [ 1, "<select multiple='multiple'>", "</select>" ]
            : /^<leg/i.test(str) ? [ 1, "<fieldset>", "</fieldset>" ]
            : /^<col/i.test(str) ? [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] : null;
       
        parent = element;
        if(wrap){
            parent.innerHTML = wrap[1] + str + wrap[2];
            //on définit ele, le dernier parent 
            while (wrap[0]--)
			    parent = parent.lastChild;
        }else
            //sinon on remplit dans la reférence de element de la chaine html
            parent.innerHTML =  str;
        
        if(toReturn){
            var ret =  Array.prototype.slice.call(parent.childNodes);
            return ret.length - 1 ? ret : ret[0];
        }
    }
    
    //céer des élements via une syntaxe JSON
    function createJSON(object){
        var tag = object.tag,
            items = object.items,
            el;
            
        delete object.tag;
        delete object.items;
        
        if(isIE)if(tag.toLowerCase() == 'input'){
            el = document.createElement('<input type="'+object.type+'" '+(object.checked ? 'checked="checked"' : '')+(object.name ? 'name="'+object.name+'"' : '')+'>');
        }else if(tag.toLowerCase() == 'select'){
            el = document.createElement('<select '+(object.multiple ? 'multiple="multiple"' : '')+(object.name ? 'name="'+object.name+'"' : '')+'>');
        }else if(tag.toLowerCase() == 'textarea')
            el = document.createElement('<textarea '+(object.name ? 'name="'+object.name+'"' : '')+'></textarea>');
        el =  el || document.createElement(tag);
        
        for(var i in  object)
            spaceName.setAttribute(el, i, object[i]); 
            
        if(items)
            getFuncInsertion(items)(el, items);
            
        object.tag = tag;
        object.items = items;
        return el;
    }
    
    //céer des élements via une syntaxe JSON
    function createArray(array){
        for(var i = 0, l = array.length, ret = []; i < l; i++){
            ret[i] = getFunctionCreate(array[i])(array[i], true);}
        return ret;
    }
    
    //retourne la fonction de création en fonction du type fournit
    function getFunctionCreate(els){
        return typeof els == 'string' ? createHTML : els.constructor == Object ? createJSON : createArray;
    }
    
    //inser un élement a partir d'une sible et d'une position(before)
    function insert(el, sible, before){
        if(before){
            sible.parentNode.insertBefore(el, sible);
        }else sible.appendChild(el);
    }
    
    //insertion des élement via une string
    function insertHTML(el, str, before){
        createHTML(str); 
        var elem;    
        while (parent.childNodes[0]){
            elem = parent.removeChild(parent.childNodes[0]);
            insert(elem, el, before);
        }       
    }
    
    //insertion des élement via une JSON
    function insertJSON(el, object, before){
        var els = createJSON(object);
        insert(els, el, before);
    }
    
    //insertion des élement via  un noeud HTML
    function insertNod(el, nod, before){
        insert(nod, el, before);
    }
    
    //insertion des élements via un tableau ou une collection
    function insertArray(el, array, before){
        for(var i = 0, l = array.length; i < l; i++)
            getFuncInsertion(array[i])(el, array[i], before);
    }
    
    //retourne la fonction d'insertion en fonction du type fournit
    function getFuncInsertion(els){
        return typeof els == 'string' ? insertHTML : els.constructor == Object ? insertJSON : els.length ? insertArray : insertNod;
    }
    
    function setOpacity(element,value) {
        value = value < 0.00001 ? 0 : value;
        if(isIE){
            element.style.filter = 'alpha(opacity=' + value * 100+ ')';
        }else 
            element.style.opacity = value;
    };
    //création d'un objet d'acces rapide au propriété accéssible uniquement comme propriété du noeud    
    var camelGroupe = ['colSpan', 'rowSpan', 'vAlign', 'dateTime', 'accessKey', 'tabIndex', 'encType', 'maxLength', 'readOnly', 'longDesc', 'cellPadding', 'cellSpacing', 'frameBorder', 'useMap', 'id'];
    for (var i = 0, c, isCamel = {'class' : 'className', 'className' : 'className', id : 'id', 'for' : 'htmlFor'}; c = camelGroupe[i]; i++)
        isCamel[c.toLowerCase()] = c;
    
    //création d'un objet d'acces rapide au propriété accéssible uniquement comme propriété du noeud, et dont dont les valeur de typoe bool doivent avoir une notation XHTML     
    var boolGroupe = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
    for (var i = 0, c, isBool = {}; c = boolGroupe[i]; i++)
        isBool[c] = c;
    
    /*------------------------publique-----------------------*/
    
    //par forcement nécessaire, mais pour etre en 'harmonie' avec toute les autres fonctions
    spaceName.getHTML = function(el){
        return el.innerHTML;
    }
    
    //fonction original de jdmcreator -> http://www.javascriptfr.com/codes/EMULER-OUTERHTML_50599.aspx 
    spaceName.getOutherHTML = function(el){
        element.innerHTML = '';
        element.appendChild(el.cloneNode(true));
        return element.innerHTML; 
    }
    
    spaceName.getAttribute = function(el, attr){
        if(attr == 'style')
            return el.style.cssText;
        var camel, bool;
        return r = isIE || (camel = isCamel[attr]) || (bool = isBool[attr]) ? el[camel || bool || attr] : el.getAttribute(attr);
    }
    
    spaceName.setAttribute = function(el, attr, value){
        if(attr == 'style')
            return spaceName.setStyle(el, value);
        var camel = isCamel[attr], 
            bool = isBool[attr];
        if(bool && !value){
            el[bool] = null;
        }else if(isIE || camel || bool){
            el[camel || bool || attr] = bool || value;
        }else el.setAttribute(attr, value);
    }
    
    spaceName.removeAttribute = function(el, attr){
        if(attr == 'style'){
            el.style.cssText = '';
            return;
        }
        var camel = isCamel[attr], 
            bool = isBool[attr];
        if(isIE || camel || bool){
            el[camel || bool || attr] = null;
        }else el.removeAttribute(attr);
    }
    
    spaceName.setStyle = function(el, style){
        if (typeof style == 'string'){
            el.style.cssText += ';' + style;
            if(style.indexOf('opacity') > -1)
                setOpacity(el, style.match(/opacity:\s*(\d?\.?\d*)/)[1]);   
        }else  for(var i in style){
            if(i == 'opacity'){ 
                setOpacity(el, style[i]);
            }else el.style[i == 'float' ? 'cssFloat': i] = style[i];  
        }
    }
    
    spaceName.setHTML = function(el, els){
        el.innerHTML = '';
        getFuncInsertion(els)(el, els);
    }
    
    spaceName.append = spaceName.insertIntoLast = function(el, els){
        getFuncInsertion(els)(el, els);
    }
    
    spaceName.prepend = spaceName.insertBefore = function(el, els){
        getFuncInsertion(els)(el, els, true);
    }
    
    spaceName.insertIntoFirst = function(el, els){
        var ele; 
        getFuncInsertion(els)((ele = el.childNodes[0]) ? ele : el, els, !!ele);
    }
    
    spaceName.insertAfter = function(el, els){
        var ele; 
        getFuncInsertion(els)((ele = el.nextSibling) ? ele : el.parentNode, els, !!ele);
    }
    
    spaceName.createElement = function(els){
        return getFunctionCreate(els)(els);
    }
})(window)//->remplacer windows par votre espace de nom


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

04 octobre 2009 16:33:59 :
ajout des fonctions -> createElement, getAttribute, setAttribute, removeAttribute
11 novembre 2009 23:56:48 :
ajout de la possibilité de passer un objet pour la création d'éléments

 Sources du même auteur

Source avec Zip SYSTÈME DE REQUÊTE SUR DES DONNÉES JSON
Source avec Zip Source avec une capture MENU ANIMER HORIZONTALE OU VERTICAL , ACCÈSSIBLE SANS JS (SA...
Source avec Zip MARQUEE VERSION2 COMPATIBLE MOOTOOLS, JQUERY, PROTOTYPE ET S...
Source avec Zip Source avec une capture UID - FRAMEWORK JAVASCRIPT
Source avec Zip GETELEMENTSBYREG

 Sources de la même categorie

Source avec Zip Source avec une capture SLIDESHOW IMAGES ET TEXTES EN PUR JAVASCRIPT par ansuzpeorth
Source avec Zip INPUT TEXT AUTOMATIQUE CREATION SUPPRESSION par lycanges
Source avec Zip Source avec une capture TABLE_SV : TABLEAU DYNAMIQUE, MONTRER/CACHER COLONNE SUR DEM... par synanceia
COLONNES ADAPTABLES EN HAUTEUR par dronoide
Source avec Zip VECTEURS ET MATRICES: OUTILS GRAPHIQUES UTILES par william voirol

 Sources en rapport avec celle ci

ÉMULER OUTERHTML par jdmcreator
INSERTION À PARTIR DE LA POSITION DU CURSEUR DANS UNE TEXTBO... par vbott
Source avec une capture POURQUOI MES SCRIPTS AJOUTÉS DYNAMIQUEMENT (AJAX, XSLT, ...)... par FREMYCOMPANY
Source avec Zip Source avec une capture JEUX DE MOTS À RAYER par corsica
Source avec Zip ÉDITEUR SIMPLE ET PRATIQUE par abdelaziz_info

Commentaires et avis

Commentaire de kazma le 14/10/2009 19:13:20 administrateur CS

je me lance

cote technique il n'y a aucuns problemes on se dit que tu maitrise bien le js ,quand je vois le code je me sens tout petit (j'y comprend rien) et je me sens incapable de mettre en oeuvre tous ca bon c'est vrais que je n'utilise jamais de librairie.

en conclusion je vais te mettre une note de 6 en espérant que l'on me contredira.

ps: tu pourait pas faire une source simple juste un fois.

Commentaire de kazma le 14/10/2009 19:16:18 administrateur CS 6/10

ouep

Commentaire de Kimjoa le 15/10/2009 14:27:07

salut kazma, merci pour ton message.

Si ton comprend pas tout le code, hésites pas à me demander.
J'utilise pourtant des techniques de base, comme les fonctions anonyme pour pas pollué l'objet global(window) (  (function(){moncode ..})()  )
les testes conditionnelle via la syntawe courte(  jo='ok' ? ca : pasca  )
l'accès au propriété d'un objet par une variable (  obj[mavariable] = ok  )
et l'appel des fonctions depuis une condition (  (jo='ok' ? cettefonction : autrefonction )(monargument)  )

Si tu comprend toutes ses techniques alors tu devrais pouvoir comprendre la source.

ferais bien un tuto un de ses 4 ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

pb IFRAME.innerHTML vs IFRAME.designMode [ par mbertier ] Salut, La fonction Init() ci-dessous (appelée dans BODY onLoad) me renvoie l'erreur suivante : "iView.document.body n'est pas un objet" Si je laisse l insertion texte [ par eax ] salut!je cherche à insérer du texte dans un textarea à l'endroit du curseur lorsque l'on clique sur une imagebye Sylvain [email</ Un formulaire d'insertion [ par benben77 ] Bonjour j'amerai savoir si quelqu'un s'est créé un formulaire d'insertion . Car jai absolument besoin pour mon site svp repond dez moi c urgent . Merc insertion fichier .js [ par pyranha ] g un fichier .js (un script pour faire un menu). il faut l'insererr dans une page html pour le faire fonctionner ? kel code dois-je mettre pour cela ? Insertion de texte d'un txt dans du HTML par Javascript [ par mastere30 ] Hello tlm,je suis débutant de chez débutant. J'aimerais savoir comment insérer du texte d'un fichier blabla.txt à ma page index.html, ca doit bien êtr insertion de text [ par BirD ] Salut,J'ai un problèm, il est certainement très facil a résoudre, mais je n'y arrive pas... en fait, j'aimerais faire en sorte que quand on clique sur innerHTML, caractères spéciaux & formulaires [ par donben ] Bonjour, je souhaite récupérer des données provenant d'une base mySQL et réinitialiser les valeurs de champs de textes situés sur un calque caché avec insertion d'espaces [ par Calypsone ] Decidement, j'ai des idées, mais je sais pas faire ...Bon, soyons clair, simple et bref :comment on passe de "javascriptfr" à "j a v a s c r i p t f r HELP pour insertion de code dans une [ par Lenulos ] Bien, bienJe n'y connais strictemtn rien en javascipt à part (alert et prompt) mais g quand même fais un petit script et j'aimerais qu'il démarre quan urgent insertion musique dans une fonction en JAVA [ par chaloup ] bonjour, voila je suis en train de faire une application en Java et je cherche comment je pourrais faire pour insérer la lecture d' une musique dans u


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales