botyaslonim Posted September 25, 2010 Report Share Posted September 25, 2010 (edited) Задача такая: при клике по одному элементу должен появляться другой.Не работает.Вот код:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Каталог</title><meta http-equiv="Content-Language" content="ru" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type = "text/javascript">window.onload = function (){document.getElementsByClassName('odin').onclick = makeIT;}function makeIT (){var text = document.getElementsByClassName('dva'); if(text.style.display!='block'){ text.style.display='block'; } else { text.style.display= 'none'; }}</script><style>.odin { width:400px; height:400px; background:#333; }.dva { width:400px; height:400px; background:#999; display:none; }</style></head><body><div class = "odin"></div><div class = "dva"></div></body></html>Где ошибка? Edited September 25, 2010 by botyaslonim Quote Link to comment Share on other sites More sharing options...
0 paska Posted September 25, 2010 Report Share Posted September 25, 2010 а откуда вы взяли метод:document.getElementsByClassName ? Quote Link to comment Share on other sites More sharing options...
0 botyaslonim Posted September 25, 2010 Author Report Share Posted September 25, 2010 Если поменять на getElementById, то тоже не работает Quote Link to comment Share on other sites More sharing options...
0 paska Posted September 25, 2010 Report Share Posted September 25, 2010 <div id = "odin"></div><div id = "dva"></div><script type = "text/javascript">window.onload = function (){document.getElementById('odin').onclick = makeIT;}function makeIT (){var text = document.getElementById('dva'); if(text.style.display!='block'){ text.style.display='block'; } else { text.style.display= 'none'; }}</script>вот так не работает? Quote Link to comment Share on other sites More sharing options...
0 botyaslonim Posted September 25, 2010 Author Report Share Posted September 25, 2010 Так работает... Quote Link to comment Share on other sites More sharing options...
0 Great Rash Posted September 27, 2010 Report Share Posted September 27, 2010 Дело в том, что getElementsByClassName возвращает массив. Вы не можете навесить событие массиву. getElementById вернет вам объект (ноду), с которой вы можете работать как захотите.Важно помнить, что getElementsByClassName - это метод, который не работает в браузерах семейства ИЕ (и во многих старых браузерах), поэтому от него лучше отказаться или заменить своим самописным. Назначенным через Object.prototype. Quote Link to comment Share on other sites More sharing options...
0 paska Posted September 27, 2010 Report Share Posted September 27, 2010 Дело в том, что getElementsByClassName возвращает массив. Вы не можете навесить событие массиву. getElementById вернет вам объект (ноду), с которой вы можете работать как захотите.Важно помнить, что getElementsByClassName - это метод, который не работает в браузерах семейства ИЕ (и во многих старых браузерах), поэтому от него лучше отказаться или заменить своим самописным. Назначенным через Object.prototype.а разве есть такой метод getElementsByClassName у объекта document, согласно стандарта ECMA? Quote Link to comment Share on other sites More sharing options...
0 s0rr0w Posted September 27, 2010 Report Share Posted September 27, 2010 а разве есть такой метод getElementsByClassName у объекта document, согласно стандарта ECMA?А при чем тут ECMA? Quote Link to comment Share on other sites More sharing options...
0 paska Posted September 27, 2010 Report Share Posted September 27, 2010 А при чем тут ECMA? согласен, затупил. перефразирую:а разве есть такой метод getElementsByClassName у объекта document, согласно стандарта DOM (который входит в структуру яыка JS)?учусь... Quote Link to comment Share on other sites More sharing options...
0 s0rr0w Posted September 27, 2010 Report Share Posted September 27, 2010 В стандарте нет, но имплементация метода существует в браузерах. Quote Link to comment Share on other sites More sharing options...
0 paska Posted September 27, 2010 Report Share Posted September 27, 2010 т.е. в Browser Object Model, правельно я понял? Quote Link to comment Share on other sites More sharing options...
0 s0rr0w Posted September 27, 2010 Report Share Posted September 27, 2010 т.е. в Browser Object Model, правельно я понял?Я бы назвал это extended DOM. Потому что Browser Object Model может описывать не только DOM, но и внутреннюю структуру самого браузрера. Неоднозначный термин получается. Quote Link to comment Share on other sites More sharing options...
Question
botyaslonim
Задача такая: при клике по одному элементу должен появляться другой.
Не работает.
Вот код:
Где ошибка?
Edited by botyaslonimLink to comment
Share on other sites
11 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.