Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Требуется вывести блок, после нажатия на строку текста.
 
 автор: Mookapek   (07.10.2008 в 21:31)   письмо автору
 
 

Требуется вывести блок, после нажатия на строку текста. В JS не разбираюсь пока, как это сделать?
Спасибо.

  Ответить  
 
 автор: Nytrogen   (07.10.2008 в 21:41)   письмо автору
 
   для: Mookapek   (07.10.2008 в 21:31)
 

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

>Требуется вывести блок
Что вы подразумеваете под словом "вывести": сделать так, чтобы блок добавился в тело документа или отобразить отдельное сообщение с текстом этого блока? Что Вы называете блоком? Блок текста или блочный контейнер, например DIV?

>после нажатия на строку текста

Строка текста - это набор символов между левой и правой границей или просто какая-то фраза, например "Нажмите сюда, чтобы вывести блок"?

  Ответить  
 
 автор: Mookapek   (07.10.2008 в 21:56)   письмо автору
 
   для: Nytrogen   (07.10.2008 в 21:41)
 

Есть форма для простого поиска, а надо еще раскрывающуюся форму для расширенного поиска.


<div>
Имя:<input type=text name=name>
<br>
<a href=''>Расширенный поиск</a>
</div>

<div id=fullsearch>
Фамилия:<input type=text name=surname>
</div>

При загрузке документа блок fullsearch не видно - он отображается только после нажатия на ссылку
"Расширенный поиск".

Я, руководствуясь своими скромными познаниями в JS, предполагаю, что в <a> надо поместить onclick="function()".
Вот только не знаю, как должна выглядеть функция и как скрыть <div id=fullsearch> до нажатия на
"Расширенный поиск".

  Ответить  
 
 автор: Nytrogen   (07.10.2008 в 22:07)   письмо автору
 
   для: Mookapek   (07.10.2008 в 21:56)
 

Так бы сразу и писали: конкретно и ясно.

<div>
Имя:<input type=text name=name>
<br>
<a href='javascript: void(0);' onclick="javascript: document.getElementById('fullsearch').style.visibility = 'visible';">Расширенный поиск</a>
</div>

<div id=fullsearch style="visibility: hidden;">
Фамилия:<input type=text name=surname>
</div> 

  Ответить  
 
 автор: Mookapek   (07.10.2008 в 22:22)   письмо автору
 
   для: Nytrogen   (07.10.2008 в 22:07)
 

Спасибо!
А как сделать, чтобы при повторном нажатии на ссылку блок снова пропадал? Видимо условие надо применить?

  Ответить  
 
 автор: Nytrogen   (07.10.2008 в 22:34)   письмо автору
 
   для: Mookapek   (07.10.2008 в 22:22)
 

Тут будет муторно всё это в onclick писать... проще написать функцию, как Вы и хотели...

<script>
function switchVisibility() {
  with (document.getElementById('fullsearch').style) {
    //вот такая хитрая переключалка =)
    visibility = visibility == 'hidden' ? 'visible' : 'hidden';
  }
}
</script>

<div>
Имя:<input type=text name=name>
<br>
<a href='javascript: void(0);' onclick="switchVisibility();">Расширенный поиск</a>
</div>

<div id=fullsearch style="visibility: hidden;">
Фамилия:<input type=text name=surname>
</div> 


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


  with (document.getElementById('fullsearch').style) {
    if (visibility == 'hidden') {
      visibility = 'visible';
    } else {
      visibility = 'hidden';
    }
  }

  Ответить  
 
 автор: Mookapek   (07.10.2008 в 22:49)   письмо автору
 
   для: Nytrogen   (07.10.2008 в 22:34)
 

Хм... а что такое "with"?

  Ответить  
 
 автор: Nytrogen   (07.10.2008 в 23:02)   письмо автору
 
   для: Mookapek   (07.10.2008 в 22:49)
 

Оператор with позволяет использовать в своём блоке один и тот же указанный объект, не указывая его название (включая полную иерархию его свойств). Все переменные, встречающиеся в блоке, будут заменяться соответственными свойствами.

Таким образом, без блока with приведённый код очень некрасиво увеличивается в размерах:
document.getElementById('fullsearch').style.visibility = document.getElementById('fullsearch').style.visibility == 'hidden' ? 'visible' : 'hidden';

  Ответить  
 
 автор: Mookapek   (10.10.2008 в 19:03)   письмо автору
 
   для: Nytrogen   (07.10.2008 в 23:02)
 

Ну и последний вопрос по теме: как сделать, чтобы при нажатии ссылки "Расширенный поиск" название ссылки изменялось на "Простой поиск"?

  Ответить  
 
 автор: Nytrogen   (13.10.2008 в 15:13)   письмо автору
 
   для: Mookapek   (10.10.2008 в 19:03)
 

<a href='javascript: void(0);' onclick="switchVisibility(); this.innerHTML = this.innerHTML == 'Обычный поиск' ? 'Расширенный поиск' : 'Обычный поиск';">Расширенный поиск</a>


Лучше конечно вместо дописывания кода к onclick, присвоить ссылке ID и добавить в функцию switchVisibility
with (document.getElementById("anchorID")) {
  innerHTML = innerHTML == 'Обычный поиск' ? 'Расширенный поиск' : 'Обычный поиск';
}

  Ответить  
 
 автор: Mookapek   (13.10.2008 в 16:19)   письмо автору
 
   для: Nytrogen   (13.10.2008 в 15:13)
 

Спасибо, Nytrogen!

  Ответить  
 
 автор: Микки   (20.10.2009 в 17:05)   письмо автору
 
   для: Nytrogen   (13.10.2008 в 15:13)
 

.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования