2010-10-27 72 views

Trả lời

9

Sử dụng jQuery, bạn có thể use the .map() method với the .get() method để lấy một mảng các số nguyên, then .apply() mảng làm đối số for Math.min để nhận giá trị tối thiểu.

Giả định rằng bạn muốn cột đầu tiên trong bảng. Bộ chọn có thể cần phải thay đổi tùy thuộc vào cột bạn muốn.

Ví dụ:http://jsbin.com/iyiqa3/

var values = $('#myTable tr > td:first-child').map(function() { 
    return parseInt($.text([this])); 
}).get(); 

var minimum = Math.min.apply(null, values); 

Without jQuery, hãy thử này:

Ví dụ: câu trả lời http://jsbin.com/iyiqa3/2/

var values = []; 

var trs = document.getElementById('myTable').getElementsByTagName('tr'); 

for(var i = 0, len = trs.length; i < len; i++) { 
    values.push(parseInt(trs[ i ].cells[ 0 ].innerHTML)); 
} 

var minimum = Math.min.apply(null, values); 
+0

+1 để sử dụng 'apply()' để chuyển một mảng vào 'Math.min()' ... thông minh. –

1

Non-jquery (và không có đảm bảo nó là" hiệu quả nhất, nhưng không được xấu):

var min, rowNo = null; 

var a = table.getElementsByTagName("TR"); 
for (var i=0; i<a.length; i++) { 
var td = a[i].childNodes[columnNo]; 
var val = parseInt(td.innerHTML); 
if (rowNo == null || val < min) { 
    min = val; 
    rowNo = i; 
    } 
} 
0

tôi sẽ đi với đồng bằng JavaScript, chạy qua mỗi hàng của bảng, nhìn vào cột bạn đang quan tâm và tìm ra tối thiểu:

function getColumnMin(tableId, columnIndex) { 
    var table = document.getElementById(tableId); 
    var rows = table.getElementsByTagName('tr'); 

    var min = Infinity; 
    for (var i = 0; i < rows.length; i++) { 
    var cols = rows[i].getElementsByTagName('td'); 
    var value = (cols[columnIndex].firstChild.nodeValue | 0); // force to integer value 
    if (value < min) 
     min = value; 
    } 
    return min; 
} 

này giả định rằng mỗi <td> chứa chính xác một giá trị và không có thẻ HTML nào khác.

+0

nodeValue của mỗi td là null. – kennebec

+0

@kennebec: Rất tiếc, đã quên 'firstChild'. Cảm ơn. – casablanca

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