Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   СКРЫТИЕ ЭЛЕМЕНТОВ ТАБЛИЦЫ (https://javascript.ru/forum/events/31484-skrytie-ehlementov-tablicy.html)

Brook 09.09.2012 22:28

СКРЫТИЕ ЭЛЕМЕНТОВ ТАБЛИЦЫ
 
Доброго времени суток!
помогите пожалуйста у меня есть таблица:
<table>
<tr id="a00">
<td>1</td>
</tr>
<tr id="a01">
<td>2</td>
</tr>
<tr id="a02">
<td>3</td>
</tr>
<tr id="a03">
<td>4</td>
</tr>
<tr id="a04">
<td>5</td>
</tr>
</table>


- всего 5 строк у каждой свой id - как мне скрыть часть таблицы допустим со второй строки по последнюю или еще как нибудь..

Заранее, спасибо!:thanks:

cyber 09.09.2012 22:30

чем большем тем тем больше шансов на ответ - не правильная логика !

Brook 09.09.2012 22:32

Цитата:

Сообщение от cyber (Сообщение 203869)
чем большем тем тем больше шансов на ответ - не правильная логика !

Спасибо в следующий раз учту..

cyber 09.09.2012 22:51

а насчет вашей проблемы:
используйте класс, к примеру :
задайте класс 'hideTd' и потом скрывайте нужные елементы

Denizz 11.09.2012 01:10

var allCells = [];
	for (i=0;i<5;i++) {
		var elem = document.getElementById("a0"+i);
		allCells.push(elem);
		}
		
allCells[2].style.visibility = 'hidden';
allCells[3].style.visibility = 'hidden';

cyber 11.09.2012 09:30

Цитата:

Сообщение от Denizz (Сообщение 204062)
var allCells = [];
	for (i=0;i<5;i++) {
		var elem = document.getElementById("a0"+i);
		allCells.push(elem);
		}
		
allCells[2].style.visibility = 'hidden';
allCells[3].style.visibility = 'hidden';

подобный код обычно называется "говно код"....

bes 11.09.2012 10:15

добавить проверок
<style>
	td {
		border: solid 1px;
	}
</style>

<table>
	<tr id="a00">
		<td>11</td>
		<td>12</td>
	</tr>
	<tr id="a01">
		<td>21</td>
		<td>22</td>
	</tr>
	<tr id="a02">
		<td>31</td>
		<td>32</td>
	</tr>
	<tr id="a03">
		<td>41</td>
		<td>42</td>
	</tr>
	<tr id="a04">
		<td>51</td>
		<td>52</td>
	</tr>
</table>
<button>hide</button>
<button>show</button>

<script>
window.onload = function () {
	var elems = document.body.children;
	var rows = elems[0].rows;
	var len = rows.length;
	
	for (var i = 0; i < len; i++) {
		rows[i].style.display = 'block';
	}
	
	function sh(first, last, mode) {
		var l = last - first;
		if (l < len) {
			var disp;
			if (mode == 'hide') {
				disp = 'none';
			} else {
				disp = 'block';
			}
			for (var i = first; i <= l; i++) {
				if (rows[i].style.display != disp) {
					rows[i].style.display = disp;
				}
			}
		}
	}
	
	elems[1].onclick = function () {
		var first = prompt('first', 1);
		var last = prompt('last', 2);
		sh(first, last, 'hide');
	}
	elems[2].onclick = function () {
		var first = prompt('first', 1);
		var last = prompt('last', 2);
		sh(first, last, 'show');
	}
}
</script>

bes 11.09.2012 10:51

так получше будет
<style>
	td {
		border: solid 1px;
	}
</style>

<table>
	<tr id="a00">
		<td>11</td>
		<td>12</td>
	</tr>
	<tr id="a01">
		<td>21</td>
		<td>22</td>
	</tr>
	<tr id="a02">
		<td>31</td>
		<td>32</td>
	</tr>
	<tr id="a03">
		<td>41</td>
		<td>42</td>
	</tr>
	<tr id="a04">
		<td>51</td>
		<td>52</td>
	</tr>
</table>
<button>hide</button>
<button>show</button>

<script>
window.onload = function () {
	var elems = document.body.children;
	var rows = elems[0].rows;
	var len = rows.length;
	
	for (var i = 0; i < len; i++) {
		rows[i].style.display = 'block';
	}
	
	function sh(first, last, mode) {
		if (last < len) {
			if (last == first) {
				var l = last + 1;
			} else 
			if (last > first) {
				var l = last + 1;
			}
		} else {
			return;
		}
		
		var disp;
		(mode == 'hide') ? disp = 'none': disp = 'block';
		
		for (var i = first; i < l; i++) {
			if (rows[i].style.display != disp) {
				rows[i].style.display = disp;
			}
		}
	}
	
	elems[1].onclick = function () {
		var first = Number(prompt('first', 1));
		var last = Number(prompt('last', 2));
		sh(first, last, 'hide');
	}
	elems[2].onclick = function () {
		var first = Number(prompt('first', 1));
		var last = Number(prompt('last', 2));
		sh(first, last, 'show');
	}
}
</script>

Denizz 11.09.2012 16:00

Цитата:

подобный код обычно называется "говно код"....
Че так сразу грубо-то? Автор кстати досконально требований не пояснил :(

cyber 11.09.2012 16:57

Цитата:

Сообщение от Denizz (Сообщение 204117)
Че так сразу грубо-то? Автор кстати досконально требований не пояснил :(

я называю вещи своими именами, как я вижу автор не понимает толком что ему надо, а вы если знаете то не нужно предлагать таких без смысленных решений .
В данном случае нужно либо использовать class либо rows .

bes 11.09.2012 17:17

Цитата:

Сообщение от cyber
как я вижу автор не понимает толком что ему надо, а вы если знаете то не нужно предлагать таких без смысленных решений .

так-то автор чётко выразил свою мысль
Цитата:

Сообщение от Brook
как мне скрыть часть таблицы допустим со второй строки по последнюю или еще как нибудь

хотя бы до
Цитата:

Сообщение от Brook
или еще как нибудь..

и зачастую ТС начинает выражать свои мысли яснее, когда видит, что его не понимают

cyber 11.09.2012 17:27

Цитата:

Сообщение от bes (Сообщение 204153)
так-то автор чётко выразил свою мысль

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

Сергей Fortoo 07.03.2024 23:50

Немного изменил вариант от bes
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<style>
.row {
  width: 100%;
  display: flex;
}
.product-layout {
  width: 40%;
}
td {
  border: solid 1px;
}
tr.tr_hide {
  display: none;
}
tr.tr_hide.active {
  display: table-row;
}
</style>

<div class="row">
<div class="product-layout">
<table>
    <tbody>
	<tr><td>11</td><td>12</td><td>13</td></tr>
	<tr><td>21</td><td>22</td><td>23</td></tr>
	<tr><td>31</td><td>32</td><td>33</td></tr>
	<tr><td>41</td><td>42</td><td>43</td></tr>
	<tr><td>51</td><td>52</td><td>53</td></tr>
    </tbody>
</table>
<!-- Кнопки скрыть/показать -->
<button class="hide">hide</button>
<button class="show">show</button>
</div>

<div class="product-layout">
<table>
    <tbody>
	<tr><td>11</td><td>12</td><td>13</td></tr>
	<tr><td>21</td><td>22</td><td>23</td></tr>
	<tr><td>31</td><td>32</td><td>33</td></tr>
	<tr><td>41</td><td>42</td><td>43</td></tr>
	<tr><td>51</td><td>52</td><td>53</td></tr>
    </tbody>
</table>
<!-- Кнопки скрыть/показать -->
<button class="hide">hide</button>
<button class="show">show</button>
</div>
</div>

<script>
$(document).ready(function() {
        function sh(first, last) {
            $('table tbody').each(function(index, element) {
            	var elems = $(element);
            	var rows = elems[0].rows;
            	var len = rows.length;
            	
            	if (len <= last){
            	    return
            	}

            	for (var i = 0; i < len; i++) {
            		rows[i].classList.remove('tr_hide');
            	}
        		
            	for (var i = last; i < len; i++) {
            		rows[i].classList.add('tr_hide');
            	}
            })
        }
    
    	$(document).on("click", ".hide", function () {
    	    var index = $(this).index('.hide');
    	    var currentLayout = $($('.product-layout')[index]);
    	    var currentButton = currentLayout.find('.tr_hide').removeClass('active');
    	})
    	$(document).on("click", ".show", function () {
    	    var index = $(this).index('.show');
    	    var currentLayout = $($('.product-layout')[index]);
    	    var currentButton = currentLayout.find('.tr_hide').addClass('active');
    	})
    	
    	
        var first = Number(1);
        var last = Number(3);
        sh(first, last);
})
</script>

рони 08.03.2024 11:03

Цитата:

Сообщение от Сергей Fortoo
ПЫТАЮСЬ СДЕЛАТЬ КНОПКУ Посмотреть! и не получается

[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
и загрузку jQuery добавьте.

Сергей Fortoo 09.03.2024 15:21

рони,Спасибо за подсказку!
А здесь есть возможность подписаться на тему?

рони 10.03.2024 11:08

Цитата:

Сообщение от Сергей Fortoo
А здесь есть возможность подписаться на тему?


мой кабинет - опции -
Методы подписки на темы
Когда Вы создаете новую тему или отвечаете в теме, Вы можете выбрать автоматическое добавление этой темы


так же тут вверху есть - опции темы


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