0

みんな、私はこれを機能させようとします。ページ上のボタンをクリックすると、配列を別のページに転送して表示する必要があります。私の関数addProduct、showProduct、addItem、およびボタンが機能します。しかし、配列からの私のデータは他のページに渡されません。したがって、ページ A のボタンをクリックすると、この配列に値が追加されます。しかし、ページBでは、配列が空であることを示しています

var products = new Array();

    window.addEventListener("load", loadPage, false);
    window.addEventListener("load", addButton, false);
    window.addEventListener("load", showProducts, false);

    function addButton() {
        var button = document.getElementById("sell");
        button.addEventListener("click", addItem, false);
    }

    function loadPage(){
        getCookie();
    }

    function getCookie(){
        var elements = document.cookie.split('=');
        var products_cookie = elements[1].split('%');
        for(var i=0;i < products_cookie.length-1;i++) {
            var tmp = products_cookie[i].split('$');
            addProduct(tmp[0], tmp[1], tmp[2]);
        }
    }

    function setCookie(){

        var date = new Date();
        date.setTime(date.getTime()+(2592000)); //expire time = 30 dagen nadat cookie aangemaakt is
        var expires = "; expires="+date.toGMTString()
        var text = "";
        for (var i = 0; i < products.length; i++){
            text+= products[i][0] + "$" + products[i][1] + "$" + products[i][2] +"%";  // slaat naam $ aantal $ prijs op
        }
        document.cookie = "tradepoint"+text+expires;
    }

    function addProduct(pName, pAmount, pPrice){
            var product = new Array(pName, parseInt(pAmount), pPrice);
            products[products.length] = product;   
        setCookie();
    }

    function addItem(){
        addProduct("andrej", 2, 1);
        alert(products + " " + products.length);
    }

    function showProducts(){
        if (products.length != 0){
            document.getElementById("shopList").innerHTML = "<ul><li>Full</li></ul>";
        }
        else{
            document.getElementById("shopList").innerHTML = "<ul><li>Empty</li></ul>";
        }
    }
4

2 に答える 2

0

Cookie はname=valueペアとして表されます。関数は、= 記号に注意setCookieする必要があることを行いません。 また、他の Cookie が設定されている場合、機能が動作しない場合があります。document.cookie = "tradepoint="+text+expires;
getCookie

于 2012-05-15T23:58:29.850 に答える
0

これをローカルホストに対してテストしていますか? Cookie は TLD に「固執」しません。少なくとも xyz が必要です - ホスト ファイルで 127.0.0.1 へのエイリアスを使用して、Cookie 関連のコードをテストします。

(stackoverflow では localhost に URL を投稿できません - アンチ トローリング テクノロジーだと思います!)

于 2012-05-15T23:59:19.563 に答える