如何使用javascript或jquery将div数据转换为数组?

时间:2013-07-22 12:46:47

标签: javascript jquery html

我想将此代码转换为数组。

<div id="Parent">
     <div class="childOne" ><span id="1dfgdffsf">ChildOne </span></div>
     <div class="childOne" ><span id = "2sdfsf">ChildTwo</span> </div>
     <div class="childOne" ><span id="3sdfsf">ChildThree </span></div>
     <div class="childOne" ><span id="4dssfsf">ChildFour </span></div>
</div>

span id是动态的。因此我不能使用它。请告诉我如何将其转换为数组。

5 个答案:

答案 0 :(得分:4)

您必须遍历每个元素并将其推入数组

//declare an array
var my_array = new Array();

//get all instances of the SPAN tag and iterate through each one
$('div#parent div.childOne span').each(function(){

    //build an associative array that assigns the span's id as the array id
    //assign the inner value of the span to the array piece
    //the single quotes and plus symbols are important in my_array[''++'']
    my_array[''+$(this).attr('id')+''] = $(this).text();

    //this code assigns the values to a non-associative array
    //use either this code or the code above depending on your needs
    my_array.push($(this).text());

});

答案 1 :(得分:3)

如果您不使用库,以下应该可以正常工作:

var result = [], matches = document.querySelectorAll("#Parent span");
for (var i = 0, l = matches.length; i < l; i++) 
    result.push(matches[i].getAttribute("id"));

否则,如果不支持document.querySelectorAll功能:

var result = [], parent = document.getElementByID("Parent");
for (var i = 0, l = parent.childNodes.length; i < l; i++) 
    result.push(parent.childNodes[i].childNodes[0].getAttribute("id"));

如果您想获得键/值对,则可以执行以下操作:

var result = [], matches = document.querySelectorAll("#Parent span");
for (var i = 0, l = matches.length; i < l; i++) 
    result[matches[i].getAttribute("id")] = matches[i].text;

使用jQuery,它就像一行代码一样简单:

var result = $("#Parent span").map(function() { return $(this).attr("id"); }).get();

答案 2 :(得分:0)

以下代码可能会对您有所帮助:

<!DOCTYPE html>
<html>
<head>
<style>
div { color:red; }
</style>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<div>First</div>
<div>Second</div>
<div>Third</div>
<div>Fourth</div>
<script>
var elems = document.getElementsByTagName("div"); // returns a nodeList
var arr = jQuery.makeArray(elems);
arr.reverse(); // use an Array method on list of dom elements
$(arr).appendTo(document.body);
</script>
</body>
</html>

答案 3 :(得分:0)

首先,尽量避免用大写字母命名id和类。 然后试试这个:

var arr = [];
$('#parent').children().each(function(){
  arr.push($(this).find('span').text());
}

答案 4 :(得分:0)

这很简单,如:

jQuery(function($) {
var anArray = [];
$("#Parent").find("span").each(function(){
    anArray.push($(this).html());
});
alert(anArray);
});