2014-10-01 2 views
0
var rowText = $('tbody tr:eq(2) td:eq(2)').map(function() { 
return $(this).text(); 
}).get()[0]; 

window.alert(rowText); 

http://jsfiddle.net/pcxx9dyy/2/Как извлечь второе наименьшее значение для конкретного столбца таблицы?

Я специально искал, чтобы извлечь самую низкую цену на рынке какого-либо пункта, за исключением одного в NPC.

Строки всегда сортируются, но иногда есть нулевые записи NPC Shop.

ответ

1

Если таблица сортируется всегда INCR и первый ряд всегда имеет NPC магазин записи, то просто исправить такой код:

$('tbody tr:eq(2) td:eq(1)') 

И это работает. Но если строки могут быть несортированы, а может быть несколько или даже нулевые записи NPC Shop, тогда вам потребуется более сложный алгоритм.

Update

Вот код для "несортированный" и "любое число магазинов записей NPC": JSFiddle

Код:

var price = null; 
$("tbody tr").each(function(i,e){ 
    var $col1 = $(e).find("td:eq(0)"),$col2 = $(e).find("td:eq(1)"); 
    if ($col1.html().indexOf("NPC")===-1) { 
     var rowPrice = parseFloat($col2.html().replace(",",".")); 
     if (!price || price.price>rowPrice) 
      price = { 
       name:$col1.find("a").html(), 
       price: rowPrice 
      }; 
    } 
}); 

alert("Min price is:"+price.price+" from "+price.name); 
+0

Строки всегда сортируются, но иногда есть нулевые записи NPC Shop. – Emi

+0

Это работает! Единственная проблема заключается в том, когда я посещаю фактическую веб-страницу, и сценарий просто не загружается с этим фрагментом кода в нем. Emi

+0

Возможно, вам придется подождать, пока DOM (html) будет полностью загружен и сгенерирован раньше запуск сценария? – jevgenig