JavaScript table 序列化

// 序列化一张表
var MySerialize = function (obj) {
    //return JSON.stringify(obj, null, 4);

    { // 写完这个函数才发现 JSON.stringify(obj, null, 4) 就能转,蛋疼
        if (typeof(obj) != "object" || obj == null)
        {
            return String(obj);
        }

        var outStr = "";
        var outStrList = [];
        var iCount = 0;

        var Serialize = function  (o, spaceStr) {
            var dSpaceStr = "\t";

            spaceStr = spaceStr || "";
            if (typeof(o) == "string")
            {
                outStrList[iCount] = "\"";
                iCount++;
                outStrList[iCount] = String(o);
                iCount++;
                outStrList[iCount] = "\"";
                iCount++;
            }
            else if (typeof(o) != "object" || o == null) {
                outStrList[iCount] = String(o);
                iCount++;
            }
            else { // object
                if (o.constructor == Array) {
                    var has = false;

                    outStrList[iCount] = "[\n";
                    iCount++;
                    for (var i = 0; i < o.length; i++) {
                        has = true;
                        var v = o[i];

                        outStrList[iCount] = spaceStr;
                        iCount++;
                        outStrList[iCount] = dSpaceStr;
                        iCount++;

                        Serialize(v, spaceStr + dSpaceStr);
                        outStrList[iCount] = ",\n";
                        iCount++;
                    }
                    if (has) {
                        iCount--;
                        outStrList[iCount] = "\n";
                        iCount++;
                    }
                    outStrList[iCount] = spaceStr;
                    iCount++;
                    outStrList[iCount] = "]";
                    iCount++;
                }
                else { // table
                    var has = false;

                    outStrList[iCount] = "{\n";
                    iCount++;
                    for (var k in o) {
                        has = true;
                        var v = o[k];

                        outStrList[iCount] = spaceStr;
                        iCount++;
                        outStrList[iCount] = dSpaceStr;
                        iCount++;
                        outStrList[iCount] = "\"";
                        iCount++;
                        outStrList[iCount] = k;
                        iCount++;
                        outStrList[iCount] = "\": ";
                        iCount++;

                        Serialize(v, spaceStr + dSpaceStr);
                        outStrList[iCount] = ",\n";
                        iCount++;
                    }
                    if (has) {
                        iCount--;
                        outStrList[iCount] = "\n";
                        iCount++;
                    }
                    outStrList[iCount] = spaceStr;
                    iCount++;
                    outStrList[iCount] = "}";
                    iCount++;
                }
            }
        }

        Serialize(obj);
        outStr = outStrList.join("");
        return outStr;
    }
}

var table = {a: 1, b: 2, c: 3, d: function() {return 0}};
console.log("table: " + JSON.stringify(table, null, 4));
console.log("table: " + MySerialize(table));


输出为

table: {
    "a": 1,
    "b": 2,
    "c": 3
}
table: {
"a": 1,
"b": 2,
"c": 3,
"d": function () {return 0}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以通过以下步骤将点击表格行后获取的数据保存到 cookie 中: 1. 首先,为表格的每一行添加一个点击事件的监听器。可以使用 JavaScript 的 `addEventListener` 方法来实现。例如,给每一行的 `<tr>` 元素添加一个 `click` 事件监听器: ```javascript const rows = document.querySelectorAll('table tr'); rows.forEach(row => { row.addEventListener('click', handleRowClick); }); ``` 2. 在点击事件的处理函数 `handleRowClick` 中,获取点击行的数据,并保存到 cookie 中。可以使用 JavaScript 的 `Document.cookie` 属性来设置 cookie 的值。例如: ```javascript function handleRowClick(event) { const rowData = event.currentTarget.innerText; document.cookie = `rowData=${rowData}`; } ``` 3. 在保存数据到 cookie 后,您可以在其他页面中通过读取 cookie 的方式获取数据。可以使用 JavaScript 的 `Document.cookie` 属性来读取 cookie 的值。例如: ```javascript const savedData = document.cookie.split(';').find(cookie => cookie.trim().startsWith('rowData=')); if (savedData) { const rowData = savedData.split('=')[1]; console.log(rowData); // 输出保存的行数据 } ``` 请注意,通过上述方法保存到 cookie 的数据是以字符串形式存储的。如果需要保存复杂的对象或结构化数据,您可能需要使用 JSON.stringify 和 JSON.parse 方法进行序列化和反序列化操作。 另外,需要注意的是,cookie 在浏览器中是有大小限制的,一般为 4KB 左右。如果您需要保存大量数据,可能需要考虑其他方式,如使用本地存储(localStorage)或会话存储(sessionStorage)等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值