javascript - 当表中有 <select> 下拉列表时,如何对表进行字符串化 (JSON)?

标签 javascript jquery html json

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

我有以下功能:

Script:

<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"}]

Demo 。这就是你想要的吗?

关于javascript - 当表中有 <select> 下拉列表时,如何对表进行字符串化 (JSON)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37159945/

相关文章:

javascript - 异步递归函数

javascript - 如何让ajax调用div更新等到它完成

javascript - JSON Split - 在间隔期间将数组文本放入 li 中

javascript - 滚动位置等于 div 内容高度时的 jQuery 警报

html - 使用 CSS 悬停时图像显示在图像上方

javascript new Date() 或 moment.js 解析日期错误

javascript - 为什么 css 变量动画在 Web 组件中不起作用

javascript - 鼠标离开时保持子菜单打开

jQuery 单属性、带过滤器的多值选择器

javascript - 将 HTML 句子拆分为单词(但保持内联 HTML 不变)