2016-05-11 21 views
0

我有它相當接近,但秩序是錯的。輸出此刻全亂了,我似乎不能將所有行添加到陣列如何從表中提取所有輸入「<select>」並填充數組?

$('#clicker').on('click', function (e) { 
     var tableToObj = function (table) { 
      var trs = table.rows, 
     trl = trs.length, 
     i = 0, 
     j = 0, 
     keys = [], 
     obj, ret = []; 

     //  j += 1; 
      for (; i < trl; i++) { 
       if (i == 0) { 

        for (; j < trs[i].children.length; j++) { 
         var sel = $(trs[i].children[j]).find("select"); 
         if (sel.length == 0) { 
          keys.push(trs[i].children[j].innerHTML); 
         } else { 
          keys.push(sel.val()); 
         } 
        } 

       } else { 

        obj = {}; 
        for (j = 0; j < trs[i].children.length; j++) { 
         var sel = $(trs[i].children[j]).find("select"); 
         if (sel.length == 0) { 
         obj[keys[j]] = trs[i].children[j].innerHTML; 
        } else { 
         keys.push(sel.val()); 
        } 

        } 
        ret.push(obj); 
       } 

      } 

      return ret; 
     }; 

     document.getElementById('r').innerHTML = JSON.stringify(tableToObj(document.getElementsByTagName('table')[0])); 


    }); 
}); 

我的HTML,我使用的是以下幾點:

<table> 
    <tr><td>FirstColumn</td><td>SecondColumn</td><td>ThirdColumn</td></tr> 
    <tr><td><select><option value="tr1">tr1</option><option value="tr2">tr2</option><option value="tr3">tr3</option><option value="tr4">tr4</option></select></td><td>1</td><td><select><option value="tr1">tr1</option><option value="tr2">tr2</option><option value="tr3">tr3</option></select></td></tr> 
    <tr><td>tr3 row</td><td></td><td><select><option value="tr1">tr1</option><option value="tr2">tr2</option><option value="tr3">tr3</option><option value="tr4">tr4</option></select></td></tr> 
    <tr><td>tr4 row</td><td></td><td></td></tr> 
    <tr><td>0</td><td>1</td><td>0</td></tr> 
    <tr><td>0</td><td>1</td><td>0</td></tr> 
</table> 
     <button id="clicker">Button</button> 
    <br /> 
    Result: 
    <div id="r"></div> 

這裏是輸出我得到:

[{"SecondColumn":"1"},{"FirstColumn":"tr3 row","SecondColumn":""},{"FirstColumn":"tr4 row","SecondColumn":"","ThirdColumn":""},{"FirstColumn":"0","SecondColumn":"1","ThirdColumn":"0"},{"FirstColumn":"0","SecondColumn":"1","ThirdColumn":"0"}] 

這並不在改變選擇value.I'm非常有信心的問題,改變的是withen內的VAR SEL for循環。

感謝

回答

0

我認爲,這是解決兩件事情:

  1. 爲了獲得select標籤,你應該的sel.val()兩個實例更改爲sel.find('option:selected').val()值。

  2. 要解決,你需要在該行循環的其他部分,更新keys.push(obj[keys[j]] =排序問題(當我> 0)

​​

相關問題