[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите с onClick пожалуйста!!
FoTP
День добрый, у меня возникла проблемма. в общем идея такая, новостной портал, новости выводятся из БД в сокращенном виде и ссылка "more", по идеи при нажати на эту ссылку должен выводится полный текст из БД. Я никак не придумаю как это реализовать. почитал в нете вроде через onClick это можно сделать. Помогите пожалуйста как это реализовать. Заранее спасибо.



Спустя 3 минуты, 41 секунда (30.03.2012 - 08:25) Invis1ble написал(а):
Можно выводить кусок текста в видимый блок, а полный текст новости в скрытый. По onclick брать текст из скрытого блока и помещать его в видимый.
element.onclick = function() {
// ....
}

Спустя 4 минуты, 56 секунд (30.03.2012 - 08:30) FoTP написал(а):
ну по идеи так оно и должно было быть, и даже правильней, но у меня вся проблемма в реализации, т.к. JS я знаю несколько поверхностно скажем так sad.gif

Спустя 5 минут, 43 секунды (30.03.2012 - 08:35) johniek_comp написал(а):
а на jquery ещё и с анимацией будет! не за что

<html>
<head>
<script
src="http://code.jquery.com/jquery-latest.js"></script>
<script>

$(document).ready(function() {
$("a.click").click(function() {
$("div.more").show("fast");
});
});
</script>

<style>

.more {
display:none;
}
</style>
</head>
<body>
<div
class="news">
<div
class="small">
Маленькая новость
</div>
<a
href="#" class="click">Читать полностью</a>
<div
class="more">
123
</div>

</div>


Спустя 3 минуты, 35 секунд (30.03.2012 - 08:39) FoTP написал(а):
Цитата
а на jquery ещё и с анимацией будет! не за что

и тем не менее Спасибо smile.gif

Спустя 14 минут, 19 секунд (30.03.2012 - 08:53) FoTP написал(а):
странно получается.
"Маленький текст" заменяю блоком php все норм заменилось, показывает текст.
"123" заменяю таким же блоком только вывожу полный текст, ошибку не выдает, но при нажатии "читать полностью " ничего не происходит :unsure:
<? include 'sql.php';?>
<html>
<
head>
<
script src="http://code.jquery.com/jquery-latest.js"></script>
<
script>
$(document).ready(function() {
$("a.click").click(function() {
$("div.more").show("fast");
});
});
</
script>

<
style>
.
more {
display:none;
}
</style>
</
head>
<
body>
<
div class="news">
<
div class="small">
<?php
while ($row2 = mysql_fetch_assoc($res2)){
echo "<b>".$row2['title']."<br></b>";
echo $row2['lowtext'];
}
?>
</div>
<
a href="#" class="click">Читать полностью</a>
<
div class="more">
<?php
while ($row2 = mysql_fetch_assoc($res2)){
echo $row3['hightext'];
}
?>
</div>

</
div>

Спустя 1 минута, 48 секунд (30.03.2012 - 08:55) Invis1ble написал(а):
Цитата
while ($row2 = mysql_fetch_assoc($res2)){
  echo $row3['hightext'];


Спустя 1 минута, 43 секунды (30.03.2012 - 08:57) FoTP написал(а):
Нет нет, это я поправил, эфект тот же.
причем в отдельном файле вот это норм работает.
<?php
include 'sql.php';

while ($row3 = mysql_fetch_assoc($res1)){

echo "<b>".$row3['hightext']."<br></b>";
}
?>

Спустя 4 минуты, 5 секунд (30.03.2012 - 09:01) johniek_comp написал(а):
Ого, а тут у тебя уже $res1! Ты возьми стери это все, и напиши заново, будет работать 100%

Спустя 3 минуты, 9 секунд (30.03.2012 - 09:04) FoTP написал(а):
Блин, ребят, у меня просто 2 новости таких res1 и res2 отличаются только содержанием а коды и запросы одинаковы smile.gif
но с этим разобрался вроде, теперь вопрос, как после отрытия полного текста убрать ссылку на читать полностью?
З.Ы. Я просто кладезь вопросов smile.gif

Спустя 3 минуты, 9 секунд (30.03.2012 - 09:07) johniek_comp написал(а):
FoTP
$("a.click").html("");

добавь в js

Спустя 3 минуты, 14 секунд (30.03.2012 - 09:10) FoTP написал(а):
Ребят, спасибо за помощи и просвещение smile.gif

Спустя 15 секунд (30.03.2012 - 09:11) killer8080 написал(а):
Цитата (FoTP @ 30.03.2012 - 07:53)
while ($row2 = mysql_fetch_assoc($res2)){
  echo "<b>".$row2['title']."<br></b>";
  echo $row2['lowtext'];
  }
?>
</div>
<a href="#" class="click">Читать полностью</a>
<div class="more">
<?php
while ($row2 = mysql_fetch_assoc($res2)){
  echo $row3['hightext'];

А как оно может работать? Ты сначала вывел весь результат выборки первым циклом, а потом снова пытаешься его перебрать вторым blink.gif

Спустя 49 секунд (30.03.2012 - 09:11) johniek_comp написал(а):
FoTP
в карму + smile.gif

Спустя 7 минут, 4 секунды (30.03.2012 - 09:18) killer8080 написал(а):
как то так
while ($row2 = mysql_fetch_assoc($res2)){
echo '<div class="small"><b>'.$row2['title'].'</b><br>'.
$row2['lowtext'].'</div>'.
'<a href="#" class="click">Читать полностью</a>'.
'<div class="more">'.$row2['hightext'].'</div>';

}

Спустя 2 минуты, 36 секунд (30.03.2012 - 09:21) FoTP написал(а):
killer8080 да ты прав. вот так правильней будет.
<?php
while ($row2 = mysql_fetch_assoc($res1)){
echo "<b>".$row2['title']."<br></b>";
echo $row2['lowtext'];

?>
</div>
<
a href="#" class="click">Читать полностью</a>
<
div class="more">
<?php

echo $row2['hightext'];
}
?>


ты меня опередил.

Спустя 2 минуты, 1 секунда (30.03.2012 - 09:23) killer8080 написал(а):
Цитата (FoTP @ 30.03.2012 - 08:21)
вот так правильней будет.

а где "}"

Спустя 2 минуты, 57 секунд (30.03.2012 - 09:26) FoTP написал(а):
Я просто копернул без нее, она на месте smile.gif

Еще вопрос возник, как проверить была ли нажата ссылько? Т.Е. если не нажимали ссыль то одно, если нажимали то другое.
это через if я напишу, мне бы только узнать по какому событию..

Спустя 4 минуты, 30 секунд (30.03.2012 - 09:30) killer8080 написал(а):
Цитата (FoTP @ 30.03.2012 - 08:26)
Еще вопрос возник, как проверить была ли нажата ссылько? Т.Е. если не нажимали ссыль то одно, если нажимали то другое.
это через if я напишу, мне бы только узнать по какому событию..

Проверить где? На стороне сервера или клиента? У тебя же ссылки как таковой нет, там только вызов js функции.

Спустя 2 минуты, 32 секунды (30.03.2012 - 09:33) FoTP написал(а):
Значит проверка вызова функции. Это для того чтобы при нажатии на Читать полностью первый текст(т.е. короткий) убирался а всесто него вставлялся второй (т.е. полный) а не после него.

Спустя 2 минуты, 53 секунды (30.03.2012 - 09:36) killer8080 написал(а):
Блокам вместо класса задаешь уникальные id, а в функции соответствующие блоки скрываешь и показываешь.

Спустя 7 минут, 45 секунд (30.03.2012 - 09:44) killer8080 написал(а):
<script type="text/javascript">
<!--


function show_more(i){
document.getElementById('small'+i).style.display = 'none';
document.getElementById('more'+i).style.display = 'block';
}

//-->
</script>

$i = 0;
while ($row2 = mysql_fetch_assoc($res2)){
$i++;
echo '<div id="small'.$i.'"><b>'.$row2['title'].'</b><br>'.
$row2['lowtext'].'</div>'.
'<a href="#" onclick="show_more('.$i.'); return false;">Читать полностью</a>'.
'<div id="more'.$i.'" style="display: none">'.$row2['hightext'].'</div>';
}

Спустя 52 секунды (30.03.2012 - 09:45) m4a1fox написал(а):
FoTP
Странно получается... такой вопросик.... А вот нажимаем, открывается полная новость... я почитал, хочу закрыть.... а как это сделать?

Спустя 5 минут, 2 секунды (30.03.2012 - 09:50) killer8080 написал(а):
Цитата (m4a1fox @ 30.03.2012 - 08:45)
Странно получается... такой вопросик.... А вот нажимаем, открывается полная новость... я почитал, хочу закрыть.... а как это сделать?

ТС до этого еще не дошёл rolleyes.gif

Спустя 4 минуты, 9 секунд (30.03.2012 - 09:54) m4a1fox написал(а):
killer8080
А.... Просто тут "умники" click насоветовали.... наверно не знают про toggle в jq.... smile.gif

Спустя 1 час, 6 минут, 17 секунд (30.03.2012 - 11:00) FoTP написал(а):
killer8080 та же проблемма с уборкой "читать полностью" sad.gif


Спустя 6 минут, 29 секунд (30.03.2012 - 11:06) m4a1fox написал(а):
FoTP
Вопрос! Вы через пост читаете сообщения?

Спустя 3 минуты, 34 секунды (30.03.2012 - 11:10) FoTP написал(а):
Через пост я принемаю форму (заполнения новостей(заголовок, текст)) помещаю принятое в БД, потом просто циклом вытаскиваю что нужно.

Спустя 10 минут, 14 секунд (30.03.2012 - 11:20) m4a1fox написал(а):
FoTP
Мдя...
Как я понял у вас показывать показывает, но не сворачивается обратно? Так?

Спустя 9 минут, 40 секунд (30.03.2012 - 11:30) FoTP написал(а):
m4a1fox угу sad.gif
подскажите? unsure.gif

Спустя 2 минуты, 27 секунд (30.03.2012 - 11:32) m4a1fox написал(а):
FoTP
Перечитай вторую страницу своего топика еще раз... просто "умники" наговорят что попало....

Спустя 54 минуты, 14 секунд (30.03.2012 - 12:27) FoTP написал(а):
m4a1fox сделал без click'ов с блоками. Я думаю так, нужно сделать чтобы при повторном нажатии читать полностью все возвращалось на место.

Спустя 3 минуты, 13 секунд (30.03.2012 - 12:30) killer8080 написал(а):
FoTP
я тебе показал простейший способ, безовсяких квери, как показать. Переделай его так, чтобы инвертировал текущий стиль.

Спустя 8 минут, 52 секунды (30.03.2012 - 12:39) m4a1fox написал(а):
FoTP
Цитата
я тебе показал простейший способ, безовсяких квери, как показать. Переделай его так, чтобы инвертировал текущий стиль.

Кстати да.... А killer8080 то прав.

Спустя 28 минут, 41 секунда (30.03.2012 - 13:07) FoTP написал(а):
Я Js очень поверхностно знаю..

Спустя 33 минуты, 15 секунд (30.03.2012 - 13:41) m4a1fox написал(а):
FoTP
Цитата
Я Js очень поверхностно знаю..

Прости, но не могу удержаться....
А в jQuery у тебя познания зашкаливают?

Спустя 7 минут, 59 секунд (30.03.2012 - 13:49) FoTP написал(а):
m4a1fox не понял, причем тут JQuery?

Спустя 9 минут, 44 секунды (30.03.2012 - 13:58) m4a1fox написал(а):
FoTP
Проехали. Не бери в голову. Это я не удачно пошутил... Тогда если не js и не jq - как ты реализовал задуманное?

Спустя 3 минуты (30.03.2012 - 14:01) FoTP написал(а):
killer8080 код скидывал, так и сделал smile.gif вот голову ломаю как обатно все это сворачивать

Спустя 6 минут, 3 секунды (30.03.2012 - 14:07) Invis1ble написал(а):
Цитата
вот голову ломаю как обатно все это сворачивать

все очень просто, тебе нужно выполнить те же действия, что в show_more(), только наоборот - скрыть more+i и показать small+i

Спустя 10 минут, 24 секунды (30.03.2012 - 14:18) killer8080 написал(а):
$i = 0;
while ($row2 = mysql_fetch_assoc($res2)){
$i++;
echo '<div id="small'.$i.'"><b>'.$row2['title'].'</b><br>'.
$row2['lowtext'].'</div>'.
'<a href="#" onclick="show_more('.$i.', this); return false;">Читать полностью</a>'.
'<div id="more'.$i.'" style="display: none">'.$row2['hightext'].'</div>';

}


<script type="text/javascript">
<!--


function show_more(i, a){
var small = document.getElementById('small'+i),
more = document.getElementById('more'+i);
a.innerHTML = a.innerHTML == 'Читать полностью' ? 'Скрыть' : 'Читать полностью';
small.style.display = small.style.display == 'none' ? 'block' : 'none';
more.style.display = more.style.display == 'block' ? 'none' : 'block';
}

//-->
</script>


UPD
провтыкал return false;, исправил

Спустя 1 час, 44 минуты, 34 секунды (30.03.2012 - 16:02) johniek_comp написал(а):
m4a1fox
:D :D :D
По твоему если человек пишет
if(!empty($var))


то он не знает что есть
isset();

Спустя 34 минуты, 21 секунда (30.03.2012 - 16:37) m4a1fox написал(а):
johniek_comp
Сожри мою печень ледяной троль, это
Свернутый текст

m4a1fox
biggrin.gif biggrin.gif biggrin.gif
По твоему если человек пишет

if(!empty($var))



то он не знает что есть

isset();


причем тут?

Спустя 1 час, 37 минут, 20 секунд (30.03.2012 - 18:14) FoTP написал(а):
спасибо ребят smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.