Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.12.2015, 10:50
Новичок на форуме
Отправить личное сообщение для skryl0v Посмотреть профиль Найти все сообщения от skryl0v
 
Регистрация: 04.12.2015
Сообщений: 7

Развертывание строк в таблице
Всем добрый день, мне нужно сделать выпадающие строки у таблицы следующим образом, чтобы по нажатию ссылки поля в таблице под ней выпадали строки относящиеся к данной ссылке полю.
Я написал что-то похожее но у меня открываются все подстроки полей, а нужно чтобы открывались только те которые соответствуют нажатому полю и соответственно с закрытием так же. Условия такие что количество подстрок для всех строк ссылок не обязательно должно быть одинаковое.
Привожу свой скрипт, подскажите пожалуйста в какую сторону думать и как это реализовать. Заранее благодарен тем кто откликнется и что-нибудь подскажет.
<html>
<head>
<meta charset="utf-8">
<title>My_page3</title>
<style>
    .box{background-color: blue;}
    .parent{ background-color: yellow;}
</style>
<script type="text/javascript">
        function openbox(){
             var disp = document.getElementsByClassName('box');
             for(var i=0;i<disp.length;i++){
                 if(disp[i].style.display == "none"){
                     disp[i].style.display = "";
                 }
                 else{
                     disp[i].style.display = "none";
                 }
                 }
        }
</script>

</head>
<body>
<table name="table1" border="1">
    <tr class="parent">
        <td><a href="#" onclick="openbox();">Gold</a></td>
        <td>121</td>
    </tr>
    <tr class="box" style="display: none;">
        <td>NewGold</td>
        <td>122</td>
    </tr>
    <tr class="box" style="display: none;">
        <td>NewNewGold</td>
        <td>000</td>
    </tr>
    <tr class="parent">
        <td><a href="#" onclick="openbox();">Box</a></td>
        <td>12</td>
    </tr>
    <tr class="box" style="display: none;">
        <td>NewBox</td>
        <td>13</td>
    </tr>
    <tr  class="parent">
        <td><a href="#" onclick="openbox();">Tools</a></td>
        <td>10</td>
    </tr>
    <tr class="box" style="display: none;">
        <td>Tools</td>
        <td>9</td>
    </tr>
    <tr class="box" style="display: none;">
        <td>NewTools</td>
        <td>14</td>
    </tr>
        <tr class="box" style="display: none;">
        <td>NewNewTools</td>
        <td>14</td>
    </tr>
</table>
</body>
</html>

Последний раз редактировалось skryl0v, 06.12.2015 в 11:18.
Ответить с цитированием
  #2 (permalink)  
Старый 06.12.2015, 10:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

skryl0v,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 06.12.2015, 11:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

открыть скрыть строки таблицы
skryl0v,
<!DOCTYPE HTML>
<html>

<head>
    <meta charset="utf-8">
    <title>My_page3</title>
    <style>
        .box {
            background-color: blue;
            display: none;
        }

        .box.show {
            display: table-row;
        }

        .parent {
            background-color: yellow;
        }
    </style>
    <script type="text/javascript">
        window.addEventListener("DOMContentLoaded", function() {
            var nodes = document.querySelectorAll(".parent");
            [].forEach.call(nodes, function(tr) {
                var box = [],
                    next = tr.nextElementSibling;
                while (next && next.classList.contains("box")) {
                    box.push(next);
                    next = next.nextElementSibling
                }
                tr.cells[0].addEventListener("click", function() {
                    box.forEach(function(item) {
                        item.classList.toggle("show")
                    });
                    return false
                })
            })
        });
    </script>

</head>

<body>
    <table name="table1" border="1">
        <tr class="parent">
            <td><a href="#">Gold</a></td>
            <td>121</td>
        </tr>
        <tr class="box">
            <td>NewGold</td>
            <td>122</td>
        </tr>
        <tr class="box">
            <td>NewNewGold</td>
            <td>000</td>
        </tr>
        <tr class="parent">
            <td><a href="#">Box</a></td>
            <td>12</td>
        </tr>
        <tr class="box">
            <td>NewBox</td>
            <td>13</td>
        </tr>
        <tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
    </table>
</body>

</html>

Последний раз редактировалось рони, 07.12.2015 в 10:17.
Ответить с цитированием
  #4 (permalink)  
Старый 06.12.2015, 12:44
Новичок на форуме
Отправить личное сообщение для skryl0v Посмотреть профиль Найти все сообщения от skryl0v
 
Регистрация: 04.12.2015
Сообщений: 7

благодарю Рони, это то что нужно))
Ответить с цитированием
  #5 (permalink)  
Старый 07.12.2015, 09:51
Новичок на форуме
Отправить личное сообщение для skryl0v Посмотреть профиль Найти все сообщения от skryl0v
 
Регистрация: 04.12.2015
Сообщений: 7

не совсем то что нужно:)
я поторопился обрадовался что это то, хотя здесь открывается по нажатию даже второго столбца, но нужно чтобы открывалось только по нажатию ссылки из первого столбца. Подскажите пожалуйста что нужно опоправить.
Ответить с цитированием
  #6 (permalink)  
Старый 07.12.2015, 10:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

skryl0v,
строка 31 ...если нужна ещё и ссылка то
можно так
tr.querySelector("td a").addEventListener
Ответить с цитированием
  #7 (permalink)  
Старый 07.12.2015, 10:31
Новичок на форуме
Отправить личное сообщение для skryl0v Посмотреть профиль Найти все сообщения от skryl0v
 
Регистрация: 04.12.2015
Сообщений: 7

Сообщение от рони Посмотреть сообщение
рони,
строка 31 ...если нужна ещё и ссылка то
можно так
tr.querySelector("td a").addEventListener
спасибо!!!
Ответить с цитированием
  #8 (permalink)  
Старый 08.12.2015, 09:54
Новичок на форуме
Отправить личное сообщение для skryl0v Посмотреть профиль Найти все сообщения от skryl0v
 
Регистрация: 04.12.2015
Сообщений: 7

скроллинг до выбранной строки
подскажите пожалуйста как сделать скроллинг до выбранной выпадающей строки. Если там будет например не 100 строк а 1000.

<!DOCTYPE HTML>
<html>

<head>
    <meta charset="utf-8">
    <title>My_page3</title>
    <style>
		#st{width:40px;}
        .box {
            background-color: blue;
            display: none;
        }

        .box.show {
            display: table-row;
        }

        .parent {
            background-color: yellow;
        }
    </style>
    <script type="text/javascript">
        window.addEventListener("DOMContentLoaded", function() {
            var nodes = document.querySelectorAll(".parent");
			var num_scroll;
            [].forEach.call(nodes, function(tr) {
                var box = [],
                    next = tr.nextElementSibling;
                while (next && next.classList.contains("box")) {
                    box.push(next);
                    next = next.nextElementSibling;
                }
				
                tr.querySelector("td a").addEventListener("click", function() {
                    box.forEach(function(item){
						
                        item.classList.toggle("show");
						
				});
				num_scroll = window.pageYOffset;
				this.scrollBy(0,num_scroll);
				alert(num_scroll);	
                })		
		    })
        });
		
		
    </script>

</head>

<body>
    <table name="table1" border="1">
        <tr class="parent">
            <td id="st"><a href="#">Gold</a></td>
            <td>121</td>
        </tr>
        <tr class="box">
            <td>NewGold</td>
            <td>122</td>
        </tr>
        <tr class="box">
            <td>NewNewGold</td>
            <td>000</td>
        </tr>
        <tr class="parent">
            <td><a href="#">Box</a></td>
            <td>12</td>
        </tr>
        <tr class="box">
            <td>NewBox</td>
            <td>13</td>
        </tr>
        <tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr><tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
		<tr class="parent">
            <td><a href="#">Tools</a></td>
            <td>10</td>
        </tr>
        <tr class="box">
            <td>Tools</td>
            <td>9</td>
        </tr>
        <tr class="box">
            <td>NewTools</td>
            <td>14</td>
        </tr>
        <tr class="box">
            <td>NewNewTools</td>
            <td>14</td>
        </tr>
</table>
</body>

</html>
Ответить с цитированием
  #9 (permalink)  
Старый 08.12.2015, 10:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от skryl0v
как сделать скроллинг до выбранной выпадающей строки
не понял, о чём это вы
Ответить с цитированием
  #10 (permalink)  
Старый 08.12.2015, 10:24
Новичок на форуме
Отправить личное сообщение для skryl0v Посмотреть профиль Найти все сообщения от skryl0v
 
Регистрация: 04.12.2015
Сообщений: 7

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

Последний раз редактировалось skryl0v, 08.12.2015 в 10:39.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по таблице и перестановка строк KemPavel jQuery 2 19.10.2015 12:28
Свойство display: none для строк в таблице под IE8 vatar Internet Explorer 9 29.09.2011 14:47
Разварачивание строк в таблице на jQyery Suharik jQuery 49 07.05.2010 11:20
Подсчитать кол-во строк в таблице? bobroff jQuery 3 04.12.2009 12:29
поменять цвет у нескольких строк в таблице Root Элементы интерфейса 4 21.04.2008 10:30