Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

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

 

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

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

тема: При нажатии на одну из 2-х ссылок, показать один из 2-х DIV
 
 автор: Port_Artur   (31.07.2012 в 22:11)   письмо автору
 
 

Есть 2 DIV::

<div id="m" style="width:100%; height:100%"></div>
<div id="m1" style="width:100%; height:100%"></div>


И 2 ссылки:

<a href=”#1” onclick="func ('m'); return false">Таблица 1</a>
<a href=”#2” onclick="func ('m1'); return false">Таблица 2</a>


Помогите пожалуйста написать функцию func так, чтобы при загрузке страницы отображался только DIV c id="m".
При нажатии на ссылку "Таблица 1" отображался только DIV c id="m",
а при нажатии на ссылку "Таблица 2" отображался только DIV c id="m1".
И главное чтобы DIV, который должен отображаться при нажатии на ту или иную ссылку, не исчезал с экрана при повторном нажатии на эту ссылку.

  Ответить  
 
 автор: confirm   (01.08.2012 в 07:28)   письмо автору
 
   для: Port_Artur   (31.07.2012 в 22:11)
 

<div id="m0" style="width:100px;height:100px;
border:1px solid #000;">div 1</div> 
<div id="m1" style="width:100px;height:100px;
border:1px solid #000;display:none;">div 2</div>

<a href="#" onclick="func(0); return false">Таблица 1</a> 
<a href="#" onclick="func(1); return false">Таблица 2</a>

<script>
function func(n) {
    document.getElementById("m"+(n^1)).style.display = "none";
    document.getElementById("m"+n).style.display = "block";
}
</script>

Вот только <a href="#" onclick="чтобы_щелк_и_все" ... это плохая манера.

  Ответить  
 
 автор: Port_Artur   (01.08.2012 в 08:17)   письмо автору
 
   для: confirm   (01.08.2012 в 07:28)
 

Большое Спасибо.

>Вот только <a href="#" onclick="чтобы_щелк_и_все" ... это плохая манера.

А какая хорошая?

  Ответить  
 
 автор: confirm   (01.08.2012 в 08:20)   письмо автору
 
   для: Port_Artur   (01.08.2012 в 08:17)
 

Чем обоснован ваш выбор именно этого тега? Перечислите все свои доводы, загибая пальцы.

  Ответить  
 
 автор: Port_Artur   (01.08.2012 в 14:09)   письмо автору
 
   для: confirm   (01.08.2012 в 08:20)
 

Да я честно говоря другого, кроме тега ссылки для этого и не знаю. Ну событие onclick можно и к другим тегам приписать, просто мне нужно чтобы на текст нажимали. Если есть другие варианты более подходящие к моему случаю, буду признателен если подскажете.

  Ответить  
 
 автор: confirm   (01.08.2012 в 14:48)   письмо автору
 
   для: Port_Artur   (01.08.2012 в 14:09)
 

>просто мне нужно чтобы на текст нажимали

То есть привлечь внимание ссылкой. Но не одна же она может выглядеть так:
<style>
.red {
    width:100px;
    height:100px;
    border:1px solid #f00;
    color: #f00;
}
.blue {
    width:100px;
    height:100px;
    border:1px solid #00f;
    color: #00f;
    display: none;
}
p {
    cursor: default;
}
span {
    color: #00f;
    text-decoration: underline;
    cursor: pointer;
}
</style>
<div id="m0" class="red">Это красный</div> 
<div id="m1" class="blue">Это синий</div>

<p>Можно выбрать <span onclick="func(0)">красный</span>
или <span onclick="func(1)">синий</span>.</p>

<script>
function func(n) {
    document.getElementById("m"+(n^1)).style.display = "none";
    document.getElementById("m"+n).style.display = "block";
}
</script>

  Ответить  
 
 автор: Port_Artur   (01.08.2012 в 21:47)   письмо автору
 
   для: confirm   (01.08.2012 в 14:48)
 

Спасибо за пример.

Единственно вопрос, почему функция не работает если id ссылок меняю на m1 и m2 .
Я просто не понял как функция работает, думал что из-за смены цифр ничего страшного не произойдёт.

  Ответить  
 
 автор: confirm   (02.08.2012 в 07:34)   письмо автору
 
   для: Port_Artur   (01.08.2012 в 21:47)
 

Даже и не знаю, что сказать. Вы обязаны знать о всех операциях, которыми оперирует язык, в частности о логических. Они есть во всех языках.
У вас всего два блока, состояниями которых нужно управлять, а значит удобно с помощью логической операции формировать id блока, который на момент работы функции является противоположным.
Каждый span передает в функцию аргумент, который является порядковым номером блока в наборе (массиве элементов), то есть тот блок, который нужно открыть. А номер закрываемого блока получается путем логической операции ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR, ^):
0^1=1
1^1=0
Чем вас не устраивает ноль не знаю, но чтобы это работало и для m1, m2, нужно передавать в функцию 1 и 2 соответственно, а вторым операндом операции XOR должна быть не 1, а 3.

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

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