fnAddData()在数据表中增加了同一行,而不是增加新行

问题描述:

我有一个XML字符串,我需要根据该XML数据在数据表显示..fnAddData()在数据表中增加了同一行,而不是增加新行

var xml = "<Users><user><username>user</username><password>password</password></user><user><username>user1</username><password>password1</password></user><user><username>user2</username><password>password2</password></user></users>"; //this is a sample, but in reality I'm getting the xml string from server 
xmlDoc = $.parseXML(xml); //parsing xml to valid xml document 
var $events = $(xmlDoc).find("Users"); 

var thisTable; 
thisTable = $("#user-data").dataTable(  //user-data is the id of my table 
    { 
     "sPaginationType": "full_numbers", 
     "bJQueryUI": true 
    } 
); 

$events.each(function(index, event){ 
    console.log('test'); 
    var $event = $(event), 
    addData = []; 
    addData.push($event.children("loan").children("user").children("username").text()); 
    addData.push($event.children("user").children("password").text()); 
    thisTable.fnAddData(addData); 
}); 

这是基于演示在座

http://jsfiddle.net/jqbv2/

,但我有一个很奇怪的问题,在我的控制台,“测试”被印刷只有一次,所以每次迭代仅仅只有一次。同样在我的表中,所有用户名都显示在第一行的用户名字段中,并且所有密码都显示在第一行的密码字段中。说,我在relatime时间使用的数据是完全不同的,这只是一个例子。这是表

<table class="table table-striped table-bordered table-hover" id="loan-data"> 
    <thead> 
     <tr> 
      <th>Username</th> 
      <th>Password</th> 
     </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 

我无法弄清楚,为什么所有的数据都是加入单行这主要是由于这样的事实:.each迭代仅仅只有一个无论DATAS的多单怎么都存在。它完美的小提琴例子,但是当我经过一些修改尝试它,我得到这个冲突..

+0

'$ events'包含什么。您是否尝试将该对象的内容写入控制台? – Mouser 2015-02-07 11:34:13

+0

@Mouser,loans,prevObject:m.fn.init [1],context:document,selector:“Loans”,jquery:“1.11.1”,构造函数:function,这是我的chrome控制台显示的第一行,如果你想知道贷款,这就是我的数据,它就像一个不同的内容,它有很多嵌套的属性 – 2015-02-07 11:43:56

+0

那么你去。它只包含一个对象。 – Mouser 2015-02-07 11:44:42

此更新each应该做的伎俩:

var eventChildren = $event.children("loan"); 
eventChildren.each(function(index, event){ 
    console.log('test'); 
    var $event = $(event), 
    addData = []; 
    addData.push($event.children("user").children("username").text()); 
    addData.push($event.children("user").children("password").text()); 
    thisTable.fnAddData(addData); 
}); 

loan包含儿童节点名称user。所以我们需要迭代loan而不是遍历文档根目录。

+0

它的工作原理..非常感谢您的解释。我刚开始了解它是如何工作的。 – 2015-02-07 11:51:58

+0

我喜欢给我的

标记添加类,如 ,有什么方法可以添加它吗? – 2015-02-07 11:56:25
+0

@ user1354678,我会在CSS中这样做。使用这个:'#loan-data> tbody> tr:nth-​​child(odd){background-color:#c3c3c3;}'这会为所有奇数行添加背景色。 – Mouser 2015-02-07 11:58:45