[JavaScript] 텍스트 상자가 포함된 Table에서 텍스트 가져오기

8308 단어 JavaScripttable

개시하다


일반text 요소로만 구성된 테이블로부터 텍스트를 얻는 방법에 대한 해설문이 많지만
input이 함유된 테이블로부터 얻은 기사가 잘 보이지 않기 때문에 쪽지에 있습니다.
뭐, 하는 일은 거의 달라진 게 없어...

하고 싶은 일


이러한 느낌으로 td 탭에 input을 추가하여 사용자가 편집할 수 있는 표를 만들 수 있습니다.
이 테이블에서 바디 부분의 모든 텍스트를 추출합니다. input 부분을 포함합니다.

table.html

<!DOCTYPE html>
<html>
<head></head>
<body>
 <table id="table" border="1"  cellpadding="10">
    <tr>
      <th>名前</th>
      <th>年齢</th>
      <th>性別</th>
      <th>出身地</th>
    </tr>
    <tr>
      <td>山本</td>
      <td>
          <input type="number" style="font-size: 16px;" value="27">
      </td>
      <td></td>
      <td>栃木</td>
    </tr>
    <tr>
      <td>高橋</td>
      <td>
        <input type="number" style="font-size: 16px;" value="42">
      </td>
      <td></td>
      <td>高知</td>
    </tr>
    <tr>
        <td>渋谷</td>
        <td>
            <input type="number" style="font-size: 16px;" value="35">
        </td>
        <td></td>
        <td>神奈川</td>
      </tr>
  </table>
</body>
</html>

텍스트 상자가 포함된 Table에서 td 탭 값을 가져오는 함수


sample.js

function getTableData(){
    // 抽出したデータを格納する配列
    let data = [];
    // idでhtmlからtableの要素を取得し、trタグのNodeListを取得
    let table = document.getElementById('table');
    let tbl_tr = table.querySelectorAll('tr');
    //テーブルの1行(trタグ)毎に処理
    tbl_tr.forEach(function(tr){
        //tdタグのNodeListを取得
        let cells = tr.querySelectorAll('td');
        //テーブルのヘッダー部分は飛ばす
        if (cells.length!=0){
            // テーブルの1行(trタグ)のデータを格納する配列
            let d =[];
            //セル(tdタグ)毎に処理
            cells.forEach(function(td){
                //セルがinputタグだった場合
                if(td.innerHTML.indexOf('input') != -1) {
                    d.push(td.firstElementChild.value);
                }
                //セルがtextだった場合
                else if(td.textContent!=""){
                    d.push(td.textContent);
                }
                //セルが空白だった場合
                else{
                    d.push("");
                }
            });
            data.push(d);
        }
    });
    return data
}
이 js 파일에서 생성된 getTableData()를 호출하면 다음 정렬을 반환합니다.
0: (4) ["山本", "27", "男", "栃木"]
1: (4) ["高橋", "42", "女", "高知"]
2: (4) ["渋谷", "35", "男", "神奈川"]

좋은 웹페이지 즐겨찾기