JavaScript从循环向数组追加数组

JavaScript从循环向数组追加数组,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有下表TDs,我需要得到这些值 <table style="border: 1px solid blue;margin: 15px;"> <tr> <td class="drdsclient">DSCDS201020101</td> </tr> <tr class="drcheck"> <td>Maximu

我有下表TDs,我需要得到这些值

     <table style="border: 1px solid blue;margin: 15px;">
        <tr>
            <td class="drdsclient">DSCDS201020101</td>
        </tr>
        <tr class="drcheck">
            <td>Maximum online generations:</td>
            <td id="drcheckval" class="notopborder">30</td>
            <td id="drchecknotes" class="notopborder">notes</td>
        </tr>
        <tr class="drcheck">
            <td>Default Retention Rule set:</td>
            <td id="drcheckval" class="notopborder">No default Retention rule set</td>
            <td id="drchecknotes" class="notopborder">notes</td>
        </tr>
        <tr class="drcheck">
            <td>Default Backup Schedule set:</td>
            <td id="drcheckval" class="notopborder">No default Schedule set</td>
            <td id="drchecknotes" class="notopborder">notes</td>
        </tr>
        <tr class="drcheck">
            <td class="drdsclient">DSCDS901999102</td>
        </tr>
        <tr class="drcheck">
            <td>Maximum online generations:</td>
            <td id="drcheckval"  class="notopborder">29</td>
            <td id="drchecknotes" class="notopborder">notes</td>
        </tr>
        <tr class="drcheck">
            <td>Default Retention Rule set:</td>
            <td id="drcheckval"  class="notopborder">30 days</td>
            <td id="drchecknotes" class="notopborder">notes</td>
        </tr>
        <tr class="drcheck">
            <td>Default Backup Schedule set:</td>
            <td id="drcheckval"  class="notopborder">Monday to Friday @ 21:00</td>
            <td id="drchecknotes" class="notopborder">notes</td>
        </tr>
    </table>
但它没有附加到数组,而是将值加倍,得到以下结果:

[0]
    [drdsc] => "DSCDS201020101DSCDS901999102"
    [drcheck1] => "Maximum online generations:Maximum online generations:"
    [drcheckval1] => "30999"
    [drchecknotes1] => "notesnotes"
    [drcheck2] => "Default Retention Rule set:Default Retention Rule set:"
    [drcheckval2] => "No default Retention rule set30 days"
    [drchecknotes2] => "notesnotes"
    [drcheck3] => "Default Backup Schedule set:Default Backup Schedule set:"
    [drcheckval3] => "No default Schedule setMonday to Friday @ 21:00"
    [drchecknotes3] => "notesnotes"
[1]
    [drdsc] => "DSCDS201020101DSCDS901999102"
    [drcheck1] => "Maximum online generations:Maximum online generations:"
    [drcheckval1] => "30999"
    [drchecknotes1] => "notesnotes"
    [drcheck2] => "Default Retention Rule set:Default Retention Rule set:"
    [drcheckval2] => "No default Retention rule set30 days"
    [drchecknotes2] => "notesnotes"
    [drcheck3] => "Default Backup Schedule set:Default Backup Schedule set:"
    [drcheckval3] => "No default Schedule setMonday to Friday @ 21:00"
    [drchecknotes3] => "notesnotes" 
有什么办法可以得到如下的数组

[0]
    [drdsc] => "DSCDS201020101"
    [drcheck1] => Maximum online generations:"
    [drcheckval1] => "30"
    [drchecknotes1] => "notes"
    [drcheck2] => "Default Retention Rule set:"
    [drcheckval2] => "No default Retention rule set"
    [drchecknotes2] => "notes"
    [drcheck3] => "Default Backup Schedule set:"
    [drcheckval3] => "No default Schedule set"
    [drchecknotes3] => "notes"
[1]
    [drdsc] => "DSCDS901999102"
    [drcheck1] => "Maximum online generations:"
    [drcheckval1] => "999"
    [drchecknotes1] => "notes"
    [drcheck2] => "Default Retention Rule set:"
    [drcheckval2] => "30 days"
    [drchecknotes2] => "notes"
    [drcheck3] => "Default Backup Schedule set:"
    [drcheckval3] => "Monday to Friday @ 21:00"
    [drchecknotes3] => "notes" 

您的代码中存在一些问题。首先,您在多个位置重复了相同的
id
属性,这是无效的。您需要将它们更改为类。其次,在JS代码中,您试图读取的
id
并不存在。您似乎混淆了
id
和元素的索引

要真正实现您需要的功能,您需要遍历
.drdsclient
元素,并检索以下所有
tr
元素,直到下一个
.drdsclient
。从那里,您可以循环这些行并根据需要构建对象,如下所示:

var array1=$('.drdsclient').map(函数(){
var$client=$(此);
var$rows=$client.closest('tr').nextUntil('tr:has(.drdsclient)');
var obj={
drdsc:$client.text()
};
$rows.each(函数(i){
var rowNum=i+1;
obj['drcheck'+rowNum]=$(this.find('td:first').text();
obj['drcheckval'+rowNum]=$(this.find('td.drcheckval').text();
obj['drchecknotes'+rowNum]=$(this.find('td.drchecknotes').text();
});
返回obj;
}).get();
控制台日志(array1)

DSCDS201020101
最大在线代数:
30
笔记
默认保留规则集:
没有默认的保留规则集
笔记
默认备份计划集:
未设置默认计划
笔记
DSCDS901999102
最大在线代数:
29
笔记
默认保留规则集:
30天
笔记
默认备份计划集:
周一至周五@21:00
笔记

首先,id在html中必须是唯一的val,在元素上使用相同的id是不好的做法。obj=[{“abc”:$(“#something”).text()},…],然后是array1+=obj;没问题。如果答案有帮助的话,不要忘记接受它。我刚刚意识到我以后需要循环这个数组。有没有一种方法可以让drcheck代替drcheck1、2等等?是的,您需要构建三个独立的阵列,正如我在回答末尾提到的那样。如果你对此有异议,我建议你开始一个新的问题
[0]
    [drdsc] => "DSCDS201020101"
    [drcheck1] => Maximum online generations:"
    [drcheckval1] => "30"
    [drchecknotes1] => "notes"
    [drcheck2] => "Default Retention Rule set:"
    [drcheckval2] => "No default Retention rule set"
    [drchecknotes2] => "notes"
    [drcheck3] => "Default Backup Schedule set:"
    [drcheckval3] => "No default Schedule set"
    [drchecknotes3] => "notes"
[1]
    [drdsc] => "DSCDS901999102"
    [drcheck1] => "Maximum online generations:"
    [drcheckval1] => "999"
    [drchecknotes1] => "notes"
    [drcheck2] => "Default Retention Rule set:"
    [drcheckval2] => "30 days"
    [drchecknotes2] => "notes"
    [drcheck3] => "Default Backup Schedule set:"
    [drcheckval3] => "Monday to Friday @ 21:00"
    [drchecknotes3] => "notes"