【问题标题】:get rowdata innerHTML input value of html table获取html表格的rowdata innerHTML输入值
【发布时间】:2021-05-28 01:57:35
【问题描述】:

我有一个包含静态值的基本 HTML 表格,但只有一个单元格除外,其中包含一个输入字段。

我正在抓取行数据并将其转换为 JSON,但单个输入字段会导致问题。

没有输入字段,我可以成功抓取所有的静态值,并把它们变成一个JSON对象,如下:

var table = document.getElementById('locationdetailsBody');
var locationjsonArr = [];
for(var i =0,row;row = table.rows[i];i++){
   var col = row.cells;
   var jsonObj = {
        currlocation : $.trim(col[0].innerHTML),
        currlocationname : $.trim(col[1].innerHTML),
        currlocationoperator : $.trim(col[2].innerHTML)
    }

  locationjsonArr.push(jsonObj);
}

上述代码有效,直到我将 .val() 添加到 currlocation 的 innertHTML:

currlocation : $.trim(col[0].innerHTML.val()),

输出错误是:

Uncaught TypeError: col[0].innerHTML.val is not a function

我需要能够获取输入字段的用户输入值并将其添加到 JSON。

我怎样才能做到这一点?

【问题讨论】:

    标签: javascript jquery json innerhtml


    【解决方案1】:

    假设col[0]是对你表的td的引用,那么你可以使用querySelector()来检索子input来检索它的value

    还要注意,仅对$.trim() 使用 jQuery 有点浪费。你可以使用原生的trim() 函数并完全消除对jQuery 的依赖。另外你可以使用map()更简洁地构建数组:

    var table = document.getElementById('locationdetailsBody');
    var locationjsonArr = Array.from(table.rows).map(row => ({
      currlocation: row.cells[0].querySelector('input').value.trim(),
      currlocationname: row.cells[1].innerHTML.trim(),
      currlocationoperator: row.cells[2].innerHTML.trim()
    }));
    
    console.log(locationjsonArr);
    <table id="locationdetailsBody">
      <tr>
        <td><input value="lorem" /></td>
        <td>ipsum</td>
        <td>dolor</td>
      </tr>
    </table>

    【讨论】:

      【解决方案2】:

      .val() 用于 &lt;input&gt;&lt;textarea&gt; 值,如果您想获取元素的文本内容(不带标签),请使用 .text()innerText 用于 vanilla JS

      【讨论】:

      • 这对我不起作用。我没有对你投反对票,但我会因为你帮助我而投赞成票。谢谢。
      • 它可能会被否决,因为我错过了添加 col[1].innerText 但没问题,谢谢。
      猜你喜欢
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多