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

时间:2016-05-11 10:29:38

标签: javascript jquery html json

我正在尝试使用JSON来拉取表中选择的内容并填充一个数组,然后我可以将其推送到sharepoint列表中。我现在得到的是从选择列表中提取所有数据。 我有以下功能:   脚本: &LT;脚本&GT;      $(document).ready(function(){          $(&#39;#clicker&#39;)。on(&#39;点击&#39;,功能(e){              var tableToObj = function(table){                  var trs = table.rows,                  trl = trs.length,                  i = 0,                  j = 0,                  keys = [],                  obj,ret = [];                  for(; i&lt; trl; i ++){                      if(i == 0){                          for(; j&lt; trs [i] .children.length; j ++){                              keys.push(TRS [I]。儿童[j]的.innerHTML);                          }                      } else {                          obj = {};                          for(j = 0; j&lt; trs [i] .children.length; j ++){                              obj [keys [j]] = trs [i] .children [j] .innerHTML;                          }                          ret.push(OBJ);                      }                  }                  返回;              };              document.getElementById(&#39; r&#39;)。innerHTML = JSON.stringify(tableToObj(document.getElementsByTagName(&#39; table&#39;)[0]));          });      }); &LT; /脚本&GT;   HTML  &LT;表&gt;     &lt; tr&gt;&lt; td&gt; id&lt; / td&gt;&lt; td&gt;&lt; select&gt;&lt; option value =&#34; 1&#34;&gt; 1&lt; / option&gt;&lt; option value =&#34; 2&#34;&GT; 2'; /选项&GT;&LT; /选择&GT;&LT; / TD&GT;&LT; TD&GT;值2&LT; / TD&GT;&LT; / TR&GT;     &LT; TR&GT;&LT; TD&GT; 0℃; / TD&GT;&LT; TD&GT; 0℃; / TD&GT;&LT; TD&GT; 0℃; / TD&GT;&LT; / TR&GT;     &LT; TR&GT;&LT; TD&GT; 0℃; / TD&GT;&LT; TD&GT; 1.5&LT; / TD&GT;&LT; TD&GT; 2.15&LT; / TD&GT;&LT; / TR&GT; &LT; /表&gt; &lt; button id =&#34; clicker&#34;&gt; Button&lt; / button&gt; &lt; br /&gt; 结果: &lt; div id =&#34; r&#34;&gt;&lt; / div&gt; 编辑:小提琴:https://jsfiddle.net/naLfud1f/3/ 我期望的输出是它选择我在选择框中选择的值,而不是两者。例如 [{&#34; ID&#34;:&#34; 0&#34;&#34;&#34;:&#34; 0&#34;&#34; 2&#34;:&#34 ; 0&#34;},{&#34; ID&#34;:&#34; 0&#34;&#34;&#34;:&#34; 1.5&#34;&#34; 2& #34;:&#34; 2.15&#34;}] 要么 [{&#34; ID&#34;:&#34; 0&#34;&#34;&#34;:&#34; 0&#34;&#34; 1&#34;:&#34 ; 0&#34;},{&#34; ID&#34;:&#34; 0&#34;&#34;&#34;:&#34; 1.5&#34;&#34; 1& #34;:&#34; 2.15&#34;}] 而不是1和2

1 个答案:

答案 0 :(得分: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。这就是你想要的吗?