0

我在创建要发送的 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。

提前感谢您的想法!

4

1 回答 1

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();
});

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

于 2014-09-03T21:10:10.707 回答