Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > простой вопрос по getElementById


Автор: QApple 7.6.2009, 13:46
Помогите! Нужно получить количество элементов и поменять их значения стиля
Вот

Код

<script language='JavaScript' type='text/javascript'>
n = 1;
function pressLink(id) 
{
    if(n == 0)
    { 
        document.getElementById('show'+id).style.display = 'none'; 
        n = 1; 
    }
    else
    { 
        document.getElementById('show'+id).style.display = 'block';
        n = 0;
    }
}
</script>

<center><table cellspacing='0' cellpadding='0'>

<tr align="center"><td><a href="javascript:pressLink(1)">test</a></td></tr>
<tr align="center"><td><a href="javascript:pressLink(2)">test2</a></td></tr>

<tr style='display: none;' id='show1'><td>work! (1)</td></tr>
<tr style='display: none;' id='show2'><td>work! (2)</td></tr>

</table></center>


Нужно написать функцию showAll() при вызове которой будут ставиться none/block на все id. как это сделать?
пробывал что-то типа for (var i = 0; i < document.getElementById.length; i++)  но не работает ... в доках по getElementById() ничего не нашел

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

Заранее спасибо  smile 

Автор: SelenIT 7.6.2009, 14:03
id по определению уникален (повторяющиеся id-ы — ошибка), поэтому getElementById в норме возвращает один элемент.

Если нужно получить несколько элементов, можно, конечно, забить актуальные id-ы в массив и пробегать по нему циклом с getElementById-ом. Но лучше (на мой взгляд) воспользоваться другими ф-циями, например, getElementsByTagName, которые возвращают коллекцию элементов. А еще коллекция строк таблицы доступна как свойство ссылкаНаТаблицу.rows.

И еще, <a href="javascript:..."> — плохо, может привести к неприятностям в IE.  Надежнее так: <a href="#" onclick="...; return false">.

Автор: Samotnik 8.6.2009, 09:52
QApple, используй фреймворк (mootools, jquery)
там очень просто, допустим тебе нужно посчитать колличесвто таблиц, пишешь
Код

$('table').length;

ну а если хочешь стандартными методами, то слушай SelenIT  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)