按ID将HTMLCollection转换为Array

时间:2014-09-03 20:32:52

标签: arrays xml loops htmlcollection

我在创建要发送的XML时遇到了一个大问题。我所拥有的是使用特殊构建的ID与模式连接的HTML节点:_header_firstLeveL_secondLevel_anotherLevel

HTML结构:

<input id="_movies_noGenre_documents_AnInconvenientTruth" type="text" value="A">
<input id="_movies_genre_horror_blackAndWhite_Saw" type="text" value="B">
<input id="_movies_genre_horror_blackAndWhite_Dracula" type="text" value="C">
<input id="_movies_genre_horror_color_It" type="text" value="D">
<input id="_movies_genre_comedy_blackAndWhite_DuckSoap" type="text" value="E">
<input id="_movies_genre_comedy_color_Hangover" type="text" value="F">
<input id="_movies_genre_comedy_color_Superbad" type="text" value="G">
<input id="_movies_genre_comedy_color_Anchorman" type="text" value="H">

和目标对象:

var object = [
    movies : {
        noGenre : {
            documents : {
                AnInconvenientTruth : A
            }
        },
        genre: {
            horror : {
                blackAndWhite : {
                    Saw : B,
                    Dracula : C
                },
                color : {
                    It : D
                }
            },
            comedy : {
                blackAndWhite : {
                    DuckSoap : E
                },
                color : {
                    Hangover : F,
                    Superbad : G,
                    Anchorman : H
                }
            }
        }
    }
];

所有这些因为后来我必须遍历这个对象并准备字符串来构建要发送的XML。

提前感谢您的想法!

1 个答案:

答案 0 :(得分:1)

您可以使用jQuery解析html

var object = {}
$("input").each(function() {
      var id = $(this).attr("id");
      var id_parts = id.split("_");
      var tmp_obj  = object;
      for (var i=0; i<id_parts.length -1; i++) {
             if (!tmp_obj[id_parts[i]])
                  tmp_obj[id_parts[i]] = {};
             tmp_obj = tmp_obj[id_parts[i]];
      }
      tmp_obj[id_parts[id_parts.length -1]]=$(this).val();
});

试试这个,我希望这会对你有帮助。