【问题标题】:How can I do array of objects我怎样才能做对象数组
【发布时间】:2016-08-28 07:00:51
【问题描述】:

我有带有输入的 html 表。我想在输入框中获取值

<table id="yeni">
  <tr id="1">
    <td>
      <input id="1_1" style="width: 70px; font-size: 11px;">
    </td>
    <td>
      <input id="1_2" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="1_3" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="1_4" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="1_5" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="1_6" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="1_7" style="width: 80px; font-size: 11px;">
    </td>
  </tr>
  <tr id="2">
    <td>
      <input id="2_1" style="width: 70px; font-size: 11px;">
    </td>
    <td>
      <input id="2_2" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="2_3" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="2_4" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="2_5" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="2_6" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="2_7" style="width: 80px; font-size: 11px;">
    </td>
  </tr>
  <tr id="3">
    <td>
      <input id="3_1" style="width: 70px; font-size: 11px;">
    </td>
    <td>
      <input id="3_2" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="3_3" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="3_4" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="3_5" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="3_6" style="width: 80px; font-size: 11px;">
    </td>
    <td>
      <input id="3_7" style="width: 80px; font-size: 11px;">
    </td>
  </tr>
</table>

对于每一行我想创建一个对象

var stoktbl = {}
var table = [];

var rowCount = document.getElementById('yeni').rows.length;
for (var satirx = 1; satirx < rowCount; satirx++) {

  stoktbl.firma_barkod = document.getElementById(satirx + "_" + "1").value;
  stoktbl.adet = document.getElementById(satirx + "_" + "5").value;
  stoktbl.birim_satis_fiyati = document.getElementById(satirx + "_" + "6").value;

  table[satirx] = stoktbl;
}

var JsonString = JSON.stringify(table)
console.log(JsonString)

当使用 ; 运行它时

我只看到最后一行数据重复

[null, {
  "adet": "1",
  "birim_satis_fiyati": "69.9",
  "firma_barkod": "091986 "
}, {
  "adet": "1",
  "birim_satis_fiyati": "69.9",
  "firma_barkod": "091986 "
}, {
  "adet": "1",
  "birim_satis_fiyati": "69.9",
  "firma_barkod": "091986 "
}, {
  "adet": "1",
  "birim_satis_fiyati": "69.9",
  "firma_barkod": "091986 "
}, {
  "adet": "1",
  "birim_satis_fiyati": "69.9",
  "firma_barkod": "091986 "
}, {
  "adet": "1",
  "birim_satis_fiyati": "69.9",
  "firma_barkod": "091986 "
}, {
  "adet": "1",
  "birim_satis_fiyati": "69.9",
  "firma_barkod": "091986 "
}]

【问题讨论】:

    标签: javascript arrays object html-table


    【解决方案1】:

    在您的 for 循环中,您需要重新初始化 stoktbl 对象

    for(var satirx=1; satirx<rowCount; satirx++){
       stoktbl = {};
       //rest of the cpde
    }
    

    否则,您的 table 数组将继续在所有索引处使用相同的对象。

    另外,您需要使用push 方法将对象添加到数组中

    for(var satirx=1; satirx<rowCount; satirx++)
    {
        stoktbl = {};
        stoktbl.firma_barkod=document.getElementById(satirx +"_"+"1").value;
        stoktbl.adet= document.getElementById(satirx +"_"+"5").value;
        stoktbl.birim_satis_fiyati= document.getElementById(satirx +"_"+"6").value;
        table.push( stoktbl );
    }
    

    这将确保table 数组的第一个元素不为空。

    【讨论】:

      猜你喜欢
      • 2017-06-02
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多