当我有<选择>下拉列表
How can I stringify (JSON) a table when I have a <select> dropdown in the table?
我正试图使用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"}]
演示。这就是你想要的吗?
相关文章:
- Div根据<选择>菜单
- 如何更改<选择>使用angularJS从控制器获得的值
- 依赖<选择>HTML和JavaScript菜单
- 如何传递相同页面<选择>值到同一页<f: param>
- 渲染<选项值=“;foo”;选择>在服务器上
- <选择>标签不起作用
- 当我有<选择>下拉列表
- 记住<选择>重新加载页面
- <中的链接;选择>下拉选项
- 映射多个<选择>至<输入>
- <上的applyBindings();选择>正在导致我的subscribe()起火,
- 如何动态生成X数量的新<输入>基于a<选择>(Angular2内)
- 在<选择>使用angular ng选项可能使用ng init
- 如何在提交<选择>与AngularJS
- 使用动态<选择>以显示<输入类型=“;文本>
- 什么's导致我的<选择>框在选中时闪烁
- 点击<选择>元素,但不在<选项>
- 使<选择>选项”;点击“;自动地
- 如何动态修改<选择>在实体化css框架中
- Javascript:更改<选择>java脚本中的选项