2013-05-24 45 views
5

Tôi có một biểu mẫu thực sự là một bảng các trường văn bản. Html trông giống như thế này:Lấy các giá trị từ bảng trường văn bản javascript

<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> 

Tôi muốn lặp lại tất cả các trường và nhận giá trị khi nhấn nút, nhưng tôi nhận được không xác định được trả về trong nhật ký bảng điều khiển. Tôi không muốn sử dụng ID cho mỗi lĩnh vực như tôi muốn làm một số hoạt động cột (thêm, nhân). Tập lệnh của tôi cho cột đầu tiên trông giống như sau:

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

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

Mẹo nào? Cảm ơn

+0

Tại sao không lặp thông qua các yếu tố hình thức và quên bảng hoàn toàn? –

+0

Xin chào, vì tôi cần thực hiện một số phép toán tuyến tính (theo cột). Cảm ơn – user2135738

Trả lời

12

Bạn cần phải chọn đầu vào từ các tế bào:

// ------------------------------------v 
console.log(table.rows[i].cells[0].firstChild.value); 

Nếu bạn có thể có anh chị em (ngay cả khoảng trắng) xung quanh các đầu vào, sau đó bạn có thể sử dụng bộ sưu tập .children để nhắm mục tiêu các phần tử chính xác.

// ------------------------------------v 
console.log(table.rows[i].cells[0].children[0].value); 

+0

Cảm ơn rất nhiều vì phản hồi nhanh! – user2135738

0

Bạn có thể thay đổi vòng lặp của bạn để:

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

này được tất cả td yếu tố, vòng họ, và kiểm tra giá trị firstChild

Các vấn đề liên quan