我正在尝试使用 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/