javascript - 如何使用javascript导出带有输入字段的表格?

标签 javascript html

表格是这样的:

<table id="sample_table">
  <tr>
   <td>1</td>
   <td><input type="text" size="5" id="in2" name="txt2" value="0"/></td>
   <td><input type="text" size="5" id="in3" name="txt3" value="0"/></td>
   <td><input type="text" size="5" id="in4" name="txt4" value="0"/></td>
 </tr>

js代码是这样的:
function export(filename) {
    var csv = [];
    var rows = document.getElementById('tbl_posts').querySelectorAll("table tr");

    for (var i = 0; i < rows.length; i++) {

        var row = [], cols = rows[i].querySelectorAll("td, th");
    
        for (var j = 0; j < cols.length; j++){
            row.push(cols[j].innerText);
        }
            
        csv.push(row.join(","));

}

// Download CSV file not posted here
downloadCSV(csv.join("\n"), filename);
}
和导出按钮:
<button type="button" onclick="export('myFile')">Export</button>
因为它读取 td 而不是输入字段,所以它会将空 '' 字符串添加到 csv 列表中。如何访问输入并将它们推送到行列表中?

最佳答案

如果您可以确保只有输入作为 td 内的子节点出现,则可以使用以下方法。在迭代 td 时检查是否有任何子节点(仅在输入位于 td 内时才会在您的示例中发生)。
如果有 child (输入),请使用 .value在 child 身上获得值(value)。否则使用 .innerText .如果有不清楚的地方,欢迎评论:)

function fetchData(filename) {
  var csv = [];
  var rows = document.getElementById('sample_table').querySelectorAll("table tr");

  for (var i = 0; i < rows.length; i++) {

    var row = [],
      cols = rows[i].querySelectorAll("td, th");

    for (var j = 0; j < cols.length; j++) {
      if (cols[j].children.length > 0) { //assuming your structure is always the same and the table only contains inputs as child elements inside a td
        row.push(cols[j].firstChild.value);
      } else {
        row.push(cols[j].innerText);
      }
    }

    csv.push(row.join(","));

  }
  console.log(csv);
}
<table id="sample_table">
  <tr>
    <td>1</td>
    <td><input type="text" size="5" id="in2" name="txt2" value="0" /></td>
    <td><input type="text" size="5" id="in3" name="txt3" value="0" /></td>
    <td><input type="text" size="5" id="in4" name="txt4" value="0" /></td>
  </tr>
</table>
<button type="button" onclick="fetchData('myFile')">Export</button>

关于javascript - 如何使用javascript导出带有输入字段的表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63352170/

相关文章:

javascript - Ember.js 身份验证操作不起作用

javascript - 将 DOM 对象附加到 qunit-fixture + Qunit

html - 相邻同级未获取 CSS 变量值

css - 滚动时宽度大于窗口宽度的元素只有部分背景颜色

html - Bootstrap - 如何使图像响应某些断点?

javascript - 第一次通过 $http 访问 ADAL "protected"URL 时,应用程序正在重新初始化

javascript - 如何仅在开发环境中使用 proxyAgent

javascript - 使用 jQuery PHP 将图像替换为图像后刷新图像

html - 是否可以设置输入文本值的样式?

jquery - 悬停时保持 div 旋转