Opérations DOM pertinentes pour développer des paniers d'achat avec JavaScript (2)

Dans la section précédente, nous avons principalement obtenu l'objet nœud à exploiter

Cette section implique principalement la configuration des cookies et l'opération d'acquisition, en utilisant le modèle de conception singleton pour la conception d'encapsulation

Modèle de conception à boîtier unique

Ce qui suit est l'introduction de Wikipédia au modèle singleton :

Lors de l'application du modèle singleton, la classe qui génère le singleton doit s'assurer qu'une seule instance existe. système entier Un seul objet global est nécessaire pour coordonner le comportement global du système. Par exemple, dans le fichier de configuration de l'ensemble du système, les données de configuration ont un objet singleton pour une lecture et une modification unifiées. Lorsque d'autres objets ont besoin de données de configuration, ils obtiennent également les données de configuration via cet objet singleton, ce qui peut simplifier la configuration de manière complexe. environnements.

L'idée du modèle singleton est la suivante : une classe peut renvoyer une référence à un objet (et ce sera toujours la même) et une méthode pour obtenir l'instance (méthode statique, utilisant généralement le nom getInstance). Ensuite, lorsque nous appellerons cette méthode, si la référence détenue par la classe n'est pas vide, la référence sera renvoyée. Sinon, une instance de la classe sera créée, et la référence d'instance sera affectée à la référence détenue par la classe et. puis revint. En même temps, définissez le constructeur de la classe comme une méthode privée pour empêcher d'autres fonctions d'utiliser le constructeur pour instancier l'objet, et obtenez uniquement la seule instance de la classe via la méthode statique de la classe.

Formulaire complet : [] est facultatif

document.cookie = « name=value[;expires=date][;path=path-to-resource][;domain=domain name][;secure] »

<script>
var cookieObj = {
    /*
     增加或修改cookie
     参数:o 对象{}
     name:string cookie名
     value:string cookie值
     expires:Date对象 过期时间
     path:string 路径限制
     domain:string 域名限制
     secure:boolean  true https  false或undeinfed
     */
    set: function(o) {
        var cookieStr = encodeURIComponent(o.name) + "=" + encodeURIComponent(o.value);
        //encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
        if(o.expires) {
            cookieStr += ";expires=" + o.expires;
        }
        if(o.path) {
            cookieStr += ";path=" + o.path;
        }
        if(o.domain) {
            cookieStr += ";domain=" + o.domain;
        }
        if(o.secure) {
            cookieStr += ";secure";
        }

        document.cookie = cookieStr;
    },
    /*
     删除
     参数:n string cookie的名字
     */
    del: function(n) {
        var date = new Date();
        date.setHours(-1);  //setHours() 方法用于设置指定的时间的小时字段。
        //this代表的是当前函数的对象
        this.set({
            name: n,
            expires: date
        });
    },
    /*查找*/
    get: function(n) {
        n = encodeURIComponent(n);
        var cooikeTotal = document.cookie;
        var cookies = cooikeTotal.split("; ");
        //split() 方法用于把一个字符串分割成字符串数组。
        for(var i = 0, len = cookies.length; i < len; i++) {
            var arr = cookies[i].split("=");
            if(n == arr[0]) {
                return decodeURIComponent(arr[1]);
            //decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。    
            }
        }
    }
}
</script>

Créez un fichier cookie.js et insérez-y le code JavaScript ci-dessus.

<script type="text/javascript" src="cookie.js"></script>

sera appelé ultérieurement depuis la page HTML pour obtenir l'effet de module de fonction.


Formation continue
||
<script> var cookieObj = { /* 增加或修改cookie 参数:o 对象{} name:string cookie名 value:string cookie值 expires:Date对象 过期时间 path:string 路径限制 domain:string 域名限制 secure:boolean true https false或undeinfed */ set: function(o) { var cookieStr = encodeURIComponent(o.name) + "=" + encodeURIComponent(o.value); //encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。 if(o.expires) { cookieStr += ";expires=" + o.expires; } if(o.path) { cookieStr += ";path=" + o.path; } if(o.domain) { cookieStr += ";domain=" + o.domain; } if(o.secure) { cookieStr += ";secure"; } document.cookie = cookieStr; }, /* 删除 参数:n string cookie的名字 */ del: function(n) { var date = new Date(); date.setHours(-1); //setHours() 方法用于设置指定的时间的小时字段。 //this代表的是当前函数的对象 this.set({ name: n, expires: date }); }, /*查找*/ get: function(n) { n = encodeURIComponent(n); var cooikeTotal = document.cookie; var cookies = cooikeTotal.split("; "); //split() 方法用于把一个字符串分割成字符串数组。 for(var i = 0, len = cookies.length; i < len; i++) { var arr = cookies[i].split("="); if(n == arr[0]) { return decodeURIComponent(arr[1]); //decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。 } } } } </script>
soumettreRéinitialiser le code
  • Recommandations de cours
  • Téléchargement du didacticiel