当我有<选择>下拉列表

How can I stringify (JSON) a table when I have a <select> dropdown in the table?

本文关键字:选择 gt 下拉列表 lt      更新时间:2023-09-26

我正试图使用JSON来提取表中所选的内容,并填充一个数组,然后将其推送到共享点列表中。我现在得到的是从选择列表中提取所有数据。

我有以下功能:

脚本:

<script>
     $(document).ready(function () {
         $('#clicker').on('click', function (e) {
             var tableToObj = function (table) {
                 var trs = table.rows,
                 trl = trs.length,
                 i = 0,
                 j = 0,
                 keys = [],
                 obj, ret = [];
                 for (; i < trl; i++) {
                     if (i == 0) {
                         for (; j < trs[i].children.length; j++) {
                             keys.push(trs[i].children[j].innerHTML);
                         }
                     } else {
                         obj = {};
                         for (j = 0; j < trs[i].children.length; j++) {
                             obj[keys[j]] = trs[i].children[j].innerHTML;
                         }
                         ret.push(obj);
                     }
                 }
                 return ret;
             };
             document.getElementById('r').innerHTML =  JSON.stringify(tableToObj(document.getElementsByTagName('table')[0]));
         });
     });
</script>  

HTML

 <table>
    <tr><td>id</td><td><select><option value="1">1</option><option value="2">2</option></select></td><td>value2</td></tr>
    <tr><td>0</td><td>0</td><td>0</td></tr>
    <tr><td>0</td><td>1.5</td><td>2.15</td></tr>
</table>
<button id="clicker">Button</button>
<br />
Result:
<div id="r"></div>

编辑:Fiddle:https://jsfiddle.net/naLfud1f/3/

我期望的输出是让它获取我在选择框中选择的值,而不是同时获取这两个值。例如

[{"id":"0","":"0","2":"0"},{"id":"0","":"1.5","2":"2.15"}] 

[{"id":"0","":"0","1":"0"},{"id":"0","":"1.5","1":"2.15"}]  

而不是1和2

在其中一个循环中添加if语句。。。

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

它生成这样的结果:

[{"1":"0","id":"0","value2":"0"},
 {"1":"1.5","id":"0","value2":"2.15"}]

演示。这就是你想要的吗?