5

実際にはテキスト フィールドのテーブルであるフォームがあります。html は次のようになります。

<form>
  <table id="table">
            <tr>
              <th>Player</th>
              <th>Number</th>
              <th>Con.per.day</th>
              <th>P.100.kg</th>
              <th>P.day</th>
              <th>I.month</th>
            </tr>

            <tr>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td>Result</td>
             </tr>


            <tr>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td>Result</td>
            </tr>


            <tr>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td><input type="text" /></td>
              <td>Result</td>
            </tr>

        </table>
        <input type="button" name="rank" value="Rank" onClick="rankPlayers(this.form)"/>
    </form>

すべてのフィールドを反復処理し、ボタンを押して値を取得したいのですが、コンソール ログに undefined が返されます。いくつかの列操作 (加算、乗算) を実行したいので、各フィールドに ID を使用したくありません。最初の列のスクリプトは次のようになります。

            function rankPlayers(){
            var table=document.getElementById("table");
            for(var i=1; i<table.rows.length;i++){

                    console.log(table.rows[i].cells[0].value);
            }
        }

任意のヒント?ありがとう

4

2 に答える 2

0

ループを次のように変更できます。

    var table=document.getElementsByTagName("td");
    for(var i=1; i<table.length;i++){
        console.log(table[i].firstChild.value);
    }

これはすべてのtd要素を取得し、それらをループして、firstChild値をチェックします

于 2013-05-24T17:15:12.770 に答える