Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как узнать кол-во див-вов на странице ?. (https://javascript.ru/forum/misc/2746-kak-uznat-kol-vo-div-vov-na-stranice.html)

arlek1n 06.02.2009 14:25

как узнать кол-во див-вов на странице ?.
 
Здравствуйте.
итак. ситуация такова. у меня есть на странице таблица.
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr valign="top">
<td width="180">
<table cellpadding="4" cellspacing="2" border="0" width="180">
<tr>
<td id="to_main" class="td_menu" onClick="java script:display_page('main')" onMouseOver="java script:change_fon_on('to_main')" onMouseOut="java script:change_fon_off('to_main')">
...
</td>
</tr>
<tr>
<td id="to_clinika" class="td_menu" onClick="java script:display_page('clinika')" onMouseOver="java script:change_fon_on('to_clinika')" onMouseOut="java script:change_fon_off('to_clinika')">
...
</td>
</tr>
<tr>
<td id="to_statistika" class="td_menu" onClick="java script:display_page('statistika')" onMouseOver="java script:change_fon_on('to_statistika')" onMouseOut="java script:change_fon_off('to_statistika')">
...
</td>
</tr>
<tr>
<td id="to_protokols" class="td_menu" onClick="java script:display_page('protokols')" onMouseOver="java script:change_fon_on('to_protokols')" onMouseOut="java script:change_fon_off('to_protokols')">
...
</td>
</tr>
<tr>
<td id="to_lab" class="td_menu" onClick="java script:display_page('laboratory')" onMouseOver="java script:change_fon_on('to_lab')" onMouseOut="java script:change_fon_off('to_lab')">
...
</td>
</tr>
<tr>
<td id="to_kadri" class="td_menu" onClick="java script:display_page('otdel_kadrov')" onMouseOver="java script:change_fon_on('to_kadri')" onMouseOut="java script:change_fon_off('to_kadri')">
...
</td>
</tr>
<tr>
<td id="to_other" class="td_menu" onClick="java script:display_page('other')" onMouseOver="java script:change_fon_on('to_other')" onMouseOut="java script:change_fon_off('to_other')">
...
</td>
</tr>
</table>
</td>
<td>
<div id="main" style="display: visible;">

</div>
<div id="clinika" style="display: none;">
...
</div>
<div id="statistika" style="display: none;">
...
</div>
<div id="protokols" style="display: none;">
...
</div>
<div id="laboratory" style="display: none;">
...
</div>
<div id="otdel_kadrov" style="display: none;">

</div>
<div id="other" style="display: none;">
...
</div>
</td>
</tr>
</table>


как видно по коду. есть менюшка и есть правая ячейка, в которой див-ы. при нажатии на пункт меню хочу чтобы соотв див становился видным, а остальные, соответственно - невидимыми.
когда у меня было два таких див-а, то все было банально просто. но сейчас их аж 7 штук. и писать 7 проверок - не прельщает. так вот у меня такой вопрос: может существует какой-то массив этих див-ов, чтобы омжно было в цикле пробежацца и ненужные выключить, а ныжный включить или есть некая функция создания массива этих див-ов ?.

вот начало функции, которая будет включать выбранный див:

function display_page(need_div)
{
document.getElementById(need_div).style.display = '';

}



Спасибо...

IIIEPJIOK 06.02.2009 15:06

getElementsByTagName

arlek1n 06.02.2009 16:06

var div_array = getElementsByTagName('DIV');
var div_count = div_array.length;
alert(div_count);


ошибка: Предполагается наличие объекта

Zibba 06.02.2009 16:27

Задайте основной таблице id например "table", тогда определение кол-ва div'ов будет выглядеть так:
var div = document.getElementById("table").getElementsByTagName('div');
alert(div.length);

arlek1n 09.02.2009 10:35

спасибо. действительно работает.. но счас вопрос в другом слегка возник. итак. вот кусок таблицы с дивами:
<table id="table_main" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr valign="top">
	<td width="180">
	<table cellpadding="4" cellspacing="2" border="0" width="180">
   	<tr>
		<td id="to_main" class="td_menu" onClick="javascript:display_page('1')" onMouseOver="javascript:change_fon_on('to_main')" onMouseOut="javascript:change_fon_off('to_main')">
			...
		</td>
	</tr>
	<tr>
		<td id="to_clinika" class="td_menu" onClick="javascript:display_page('2')" onMouseOver="javascript:change_fon_on('to_clinika')" onMouseOut="javascript:change_fon_off('to_clinika')">
			...
		</td>
	</tr>

вот кусок кода, который делает див- видиым-невидимым:
function display_page(need_div)
	{
		var div_array = document.getElementById("table_main").getElementsByTagName('div');
		for (i = 1; i <= div_array.length; i++)
		{
			if (i == need_div)
			{
				document.getElementById(i).style.display = '';
			}
			else
			{
				document.getElementById(i).style.display = 'none';
			}
		}

выдает ошибку, что мол Требуется наличие объекта. Я так понимаю, что ругается на тип переменной "i". а как бы сделать чтобы все ладили друг с другом ?. )

спасибо.

ZoNT 09.02.2009 11:32

function display_page(need_div)
    {
        var div_array = document.getElementById("table_main").getElementsByTagName('div');
        for (i = 0; i < div_array.length; i++)
        {
            if (div_array[i] == need_div)
            {
                div_array[i].style.display = '';
            }
            else
            {
                div_array[i].style.display = 'none';
            }
        }

arlek1n 09.02.2009 11:53

точна. это же массив и мона обратицца к элементы массива. тупанул я ))
пасиб ))


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