Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выборка в таблице Jquery (https://javascript.ru/forum/jquery/42487-vyborka-v-tablice-jquery.html)

Lodas 29.10.2013 01:15

Выборка в таблице Jquery
 
Вложений: 1
Здравствуйте. Пытаюсь работать с DOM, создаю таблицу и поля из массива txt (результат на картинке):
txt = new Array;    //Массив данных
txt[ 0 ] = new Array( "1", "Chaplin", "10:40", "Драма", "ПН" );
txt[ 1 ] = new Array( "2", "A Man In Uniform", "11:20","Драма", "СР" )
var Table=document.createElement("table"); 
//и т.д

Пытаюсь проитись по элементам таблицы и сделать выборку:
var films=$("#films option:selected").html();//получаю какой фильм я выбрал

Как мне теперь с помощью Jquery сделать выборку из этой таблицы по полученному мною фильму(var films)?

danik.js 29.10.2013 01:23

Это вместо твоего говнокода
var films = [
    ["1", "Chaplin", "10:40", "Драма", "ПН"],
    ["2", "A Man In Uniform", "11:20","Драма", "СР"]
];


Имена переменных как правило пишут с маленькой буквы (касательно Table)

Не понимаю что за выборка? Зачем тебе колупаться в DOM'е, когда у тебя есть массив txt со всеми данными? Обращайся к нужной "записи" по индексу:

var selectedFilm = $('#films').get(0).selectedIndex;
var record = txt[selectedFilm];


Если selectedIndex не соответствует номеру записи, то можно для связывания использовать свойство value или кастомный data-атрибут

Lodas 29.10.2013 01:50

danik.js, поправки учел. Мне нужно сделать фильтрацию в таблице по выбранному полю из выпадающего списка с помощью jquery. Т.е после выбора в таблице должна остаться только одна строка с этим фильмом. Все равно не получается, как это сделать с jquery?

Lodas 29.10.2013 01:58

Просто подскажите пожалуйста как мне пройтись по ячейкам таблицы с помщью .each() и сравнить их с моим выбором из списка?
var films=$("#films option:selected").html();//получаю какой фильм я выбрал

danik.js 29.10.2013 02:05

Вариант 1:
var $rows = $(table).find('tbody tr');
$rows.hide().eq(selectedFilm).show();


Вариант 2:
var rows = table.tBodies[0].rows;
$(rows).each(function(index) {
    $(this).toggle(index == selectedFilm);
});

Lodas 29.10.2013 02:20

danik.js, к сожалению не работает(( Вот пытаюсь вывести ту строку алертом:
var rows = table.tBodies[0].rows;
$(rows).each(function(index) {

    $(this).toggle(index == selectedFilm);
    alert($(this));
});

Так не получается, зато посчитать количество элементов получилось:
$(document).ready(function() {
alert($('#table_canal tbody tr').length + ' elements!');

Как мне переделать отсюда чтобы ваш код привиденный выше заработал? мне хотя бы получить номер строки в таблице с фильмом:)

danik.js 29.10.2013 02:29

Пробуй так:
var $rows = $('#table_canal tbody tr');
$rows.hide().eq(2).show();


Должны исчезнуть все строки кроме третьей. Если сработает - далее просто вместо двойки выводи выбранный индекс из селекта.

Lodas 29.10.2013 02:38

Цитата:

Сообщение от danik.js (Сообщение 278501)
Пробуй так:
var $rows = $('#table_canal tbody tr');
$rows.hide().eq(2).show();


Должны исчезнуть все строки кроме третьей. Если сработает - далее просто вместо двойки выводи выбранный индекс из селекта.

Я вставил так:
<select name="region_id" id="region_id" onChange="sortFilm()" disabled="disabled"  >
</select>

и функцию:
function sortFilm()
{
 $(document).ready(function() {
var $rows = $('#table_canal tbody tr');
$rows.hide().eq(2).show();
}); 
}

Абсолютно ничего не происходит, можно ли как нибудь попроще(пошагово) перебрать элементы циклом, чтобы я мог их алертом выводить? дабы понять работает или нет...

danik.js 29.10.2013 02:57

console.log() на что по-твоему? Точки останова на что?

Lodas 29.10.2013 11:15

danik.js, в консоли пишет:
TypeError: $(...).get(...) is undefined
	

var selectedFilm = $('#films').get(0).selectedIndex;
Что это может быть?


Часовой пояс GMT +3, время: 17:58.