最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript表單域與json數(shù)據(jù)間的交互第1/3頁(yè)

 更新時(shí)間:2008年10月16日 23:08:27   作者:  
找了幾個(gè)javascript的框架,都沒(méi)有找到我想要的: 提供函數(shù),把某個(gè)表單的所有域封裝成json數(shù)據(jù)格式的對(duì)象,唯有自己實(shí)現(xiàn)一個(gè)。
包括對(duì)象中有集合屬性、對(duì)象中引用其他對(duì)象屬性:
復(fù)制代碼 代碼如下:

/**
**json對(duì)象數(shù)據(jù)設(shè)置到表單域中
*/
function jsonObjectToForm(form, jsonObject){
    for(i = 0, max = form.elements.length; i < max; i++) {
        e = form.elements[i];
        eName = e.name;
        if(eName.indexOf('.') > 0){
            dotIndex = eName.indexOf('.');
            parentName = eName.substring(0, dotIndex);
            childName = eName.substring(dotIndex+1);
            //迭代判斷eName,組裝成json數(shù)據(jù)結(jié)構(gòu)
            eValue = iterValueFromJsonObject(jsonObject, parentName, childName);
        }else{
            eValue = jsonObject[eName];
        }
        if(eValue && eValue != "undefined" && eValue != "null"){
            switch(e.type){
                case 'checkbox':
                case 'radio':
                    if(e.value == eValue){
                        e.checked = true;
                    }
                    break;
                case 'hidden':
                case 'password':
                case 'textarea':
                case 'text':
                    e.value = eValue;
                    break;
                case 'select-one':
                case 'select-multiple':
                    for(j = 0; j < e.options.length; j++){
                        op = e.options[j];
                        //alert("eName : " + eName + "; op value : " + op.value + "; eValue : " + eValue);
                        if(op.value == eValue){
                            op.selected = true;
                        }
                    }
                    break;
                case 'button':
                case 'file':
                case 'image':
                case 'reset':
                case 'submit':
                default:
            }
        }
    }
}

/**
* json數(shù)組讀寫(xiě)有兩種方式
* 1: a.bs[0].id
* 2: a["bs"][0]["id"]
* 把表單轉(zhuǎn)換成json數(shù)據(jù)格式
*/
function formToJsonObject(form){
    var jsonObject = {};
    for(i = 0, max = form.elements.length; i < max; i++) {
        e = form.elements[i];
        em = new Array();
        if(e.type == 'select-multiple'){
            for(j = 0; j < e.options.length; j++){
                op = e.options[j];
                if(op.selected){
                    em[em.length] = op.value;
                }
            }
        }
        switch(e.type){
            case 'checkbox':
            case 'radio':
                if (!e.checked) { break; }
            case 'hidden':
            case 'password':
            case 'select-one':
            case 'select-multiple':
            case 'textarea':
            case 'text':
                eName = e.name;
                if(e.type == 'select-multiple'){
                    eValue = em;
                }else{
                    eValue = e.value.replace(new RegExp('(["\\\\])', 'g'), '\\$1');
                }
                //判斷是否是對(duì)象類(lèi)型數(shù)據(jù)
                if(eName.indexOf('.') > 0){
                    dotIndex = eName.indexOf('.');
                    parentName = eName.substring(0, dotIndex);
                    childName = eName.substring(dotIndex+1);
                    //迭代判斷eName,組裝成json數(shù)據(jù)結(jié)構(gòu)
                    iterJsonObject(jsonObject, parentName, childName, eValue);
                }else{
                    jsonObject[eName] = eValue;
                }
                break;
            case 'button':
            case 'file':
            case 'image':
            case 'reset':
            case 'submit':
            default:
        }
    }
    return jsonObject;
}

/**
* 把表單元素迭代轉(zhuǎn)換成json數(shù)據(jù)
*/
function iterJsonObject(jsonObject, parentName, childName, eValue){
    //pArrayIndex用于判斷元素是否是數(shù)組標(biāo)示
    pArrayIndex = parentName.indexOf('[');
    //判斷是否集合數(shù)據(jù),不是則只是對(duì)象屬性
    if(pArrayIndex < 0){
        var child = jsonObject[parentName];
        if(!child){
            jsonObject[parentName] = {};
        }
        dotIndex = childName.indexOf('.');
        if(dotIndex > 0){
            iterJsonObject(jsonObject[parentName], childName.substring(0, dotIndex), childName.substring(dotIndex+1), eValue);
        }else{
            jsonObject[parentName][childName] = eValue;
        }
    }else{
        pArray = jsonObject[parentName.substring(0, pArrayIndex)];
        //若不存在js數(shù)組,則初始化一個(gè)數(shù)組類(lèi)型
        if(!pArray){
            jsonObject[parentName.substring(0, pArrayIndex)] = new Array();
        }
        //取得集合下標(biāo),并判斷對(duì)應(yīng)下標(biāo)是否存在js對(duì)象
        arrayIndex = parentName.substring(pArrayIndex+1, parentName.length-1);
        var c = jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex];
        if(!c){
            jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex] = {};
        }
        dotIndex = childName.indexOf('.');
        if(dotIndex > 0){
            iterJsonObject(jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex], childName.substring(0, dotIndex), childName.substring(dotIndex+1), eValue);
        }else{
            jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex][childName] = eValue;
        }
    }
}

/**
* 迭代json數(shù)據(jù)對(duì)象設(shè)置到表單域中
*/
function iterValueFromJsonObject(jsonObject, parentName, childName){
    //pArrayIndex用于判斷元素是否是數(shù)組標(biāo)示
    pArrayIndex = parentName.indexOf('[');
    //判斷是否集合數(shù)據(jù),不是則只是對(duì)象屬性
    if(pArrayIndex < 0){
        dotIndex = childName.indexOf('.');
        if(dotIndex > 0){
            return iterValueFromJsonObject(jsonObject[parentName], childName.substring(0, dotIndex), childName.substring(dotIndex+1));
        }else{
            return jsonObject[parentName][childName]
        }
    }else{
        pArray = jsonObject[parentName.substring(0, pArrayIndex)];
        //取得集合下標(biāo),并判斷對(duì)應(yīng)下標(biāo)是否存在js對(duì)象
        arrayIndex = parentName.substring(pArrayIndex+1, parentName.length-1);
        var c = jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex];
        dotIndex = childName.indexOf('.');
        if(dotIndex > 0){
            return iterValueFromJsonObject(jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex], childName.substring(0, dotIndex), childName.substring(dotIndex+1));
        }else{
            return jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex][childName]
        }
    }
}

相關(guān)文章

  • 解決json日期格式問(wèn)題的3種方法

    解決json日期格式問(wèn)題的3種方法

    這篇文章主要介紹了解決json日期格式問(wèn)題的3種方法 ,需要的朋友可以參考下
    2014-02-02
  • JS對(duì)象與JSON格式數(shù)據(jù)相互轉(zhuǎn)換

    JS對(duì)象與JSON格式數(shù)據(jù)相互轉(zhuǎn)換

    最近遇到這個(gè)問(wèn)題,JS對(duì)象和JSON格式數(shù)據(jù)的相互轉(zhuǎn)換。其實(shí),也就是兩個(gè)問(wèn)題:JS對(duì)象轉(zhuǎn)換成為JSON格式數(shù)據(jù)、JSON格式數(shù)據(jù)轉(zhuǎn)換成為JS對(duì)象
    2012-02-02
  • json.stringify()與json.parse()的區(qū)別以及用處

    json.stringify()與json.parse()的區(qū)別以及用處

    這篇文章主要介紹了json.stringify()與json.parse()的區(qū)別以及用處,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • json 介紹 js簡(jiǎn)單實(shí)例

    json 介紹 js簡(jiǎn)單實(shí)例

    json全稱(chēng)是JavaScript Object Notation(javaScript對(duì)象符號(hào))。JSON是一種結(jié)構(gòu)化的,輕量級(jí)的,完全獨(dú)立于語(yǔ)言的.基于文本的數(shù)據(jù)傳輸格式,在許多場(chǎng)合下用來(lái)替代xml文件格式。
    2009-12-12
  • 將nodejs打包工具整合到鼠標(biāo)右鍵的方法

    將nodejs打包工具整合到鼠標(biāo)右鍵的方法

    昨天放出了主要的nodejs打包代碼(《nodejs寫(xiě)的簡(jiǎn)單項(xiàng)目打包工具》),今天放出整合到鼠標(biāo)右鍵的代碼,打包需要配置環(huán)境變量,添加NODE_PATH為node安裝路徑
    2013-05-05
  • 利用json獲取字符出現(xiàn)次數(shù)的代碼

    利用json獲取字符出現(xiàn)次數(shù)的代碼

    之前看到一篇博客,列出一個(gè)字符串中每個(gè)字符出現(xiàn)的次數(shù),后來(lái)想想可以不可以用json來(lái)實(shí)現(xiàn)呢,結(jié)果當(dāng)然是可以的,廢話(huà)就不多說(shuō)了
    2012-03-03
  • JSON 和 JavaScript eval使用說(shuō)明

    JSON 和 JavaScript eval使用說(shuō)明

    JSON (JavaScript Object Notation) 一種輕量級(jí)的數(shù)據(jù)交換格式,比 XML 更輕巧,JSON 是JavaScript 原生格式,這意味著 JavaScript 中處理 JSON 數(shù)據(jù)不需要任何 API 和工具包。
    2010-06-06
  • 將List對(duì)象列表轉(zhuǎn)換成JSON格式的類(lèi)實(shí)現(xiàn)方法

    將List對(duì)象列表轉(zhuǎn)換成JSON格式的類(lèi)實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇將List對(duì)象列表轉(zhuǎn)換成JSON格式的類(lèi)實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • json實(shí)現(xiàn)前后臺(tái)的相互傳值詳解

    json實(shí)現(xiàn)前后臺(tái)的相互傳值詳解

    這篇文章主要介紹了json實(shí)現(xiàn)前后臺(tái)的相互傳值詳解,需要的朋友可以參考下
    2015-01-01
  • 告訴大家什么是JSON

    告訴大家什么是JSON

    JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。易于人閱讀和編寫(xiě)。同時(shí)也易于機(jī)器解析和生成。
    2008-06-06

最新評(píng)論

泰州市| 琼结县| 六安市| 辽宁省| 丰城市| 扬中市| 永修县| 盐池县| 莱芜市| 茶陵县| 河源市| 长春市| 克什克腾旗| 印江| 扬州市| 泰兴市| 全椒县| 连江县| 齐河县| 中牟县| 昌乐县| 红河县| 子洲县| 乳源| 华坪县| 元朗区| 股票| 台北市| 蕲春县| 邹城市| 启东市| 马公市| 禄劝| 新津县| 绥滨县| 深水埗区| 西青区| 正阳县| 门源| 获嘉县| 留坝县|