Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как передать id во всплывающее окно (https://javascript.ru/forum/misc/2759-kak-peredat-id-vo-vsplyvayushhee-okno.html)

Legolas 08.02.2009 06:07

Как передать id во всплывающее окно
 
Доброе время суток всем!
Подскажите пожалуйста:
нашел скрипт всплывающего окна на javascript:
<script type="text/javascript">
var curtainStep = 10; //шаг - количество пикселей на которое будет сворачивать слой за один раз
var curtainTimeout = 35;//задержка перед последующей итерацией для эффекта плавности

//текущее количество обрезаемых пикселей слоя слева и справа
var curtainLeft = 150;
var curtainRight = 150;
var curtainWidth = 300;//ширина слоя

function curtainOpen()
{
	if (curtainLeft>0)
	{
		curtainRight += curtainStep; //раскрываем область усечения справа на curtainStep пикселей
		curtainLeft -= curtainStep; //раскрываем область усечения слева на curtainStep пикселей

		var rect = 'rect(auto, '+ curtainRight +'px, auto, '+ curtainLeft +'px)';
		
		document.getElementById("dialogWindow").style.clip = rect;
		
		setTimeout(curtainOpen,curtainTimeout); //вызываем эту же функцию повторно через curtainTimeout миллисекунд
	}
}

function curtainClose()
{
	if (curtainLeft<curtainRight)//Пока левая граница области усечения не встретилась с правой
	{
		curtainRight -= curtainStep; //сужаем область усечения справа на curtainStep пикселей
		curtainLeft += curtainStep; //сужаем область усечения слева на curtainStep пикселей
		
		var rect = 'rect(auto, '+ curtainRight +'px, auto, '+ curtainLeft +'px)';
		
		document.getElementById("dialogWindow").style.clip = rect;
		
		setTimeout(curtainClose,curtainTimeout); //вызываем эту же функцию повторно через curtainTimeout миллисекунд
	}
}

function clipImg(on)
{
document.getElementById("clipEx1").style.clip=on?'rect(78px 146px 183px 84px)':'rect(auto,auto,auto,auto)';
}
</script>

вызываю окошко при нажатии на ссылку:
<a href="javascript:curtainOpen()" class='mail'>детали</a><br>
	<div id="dialogWindow">
	<div class="dTitle">mmm-da</div>
	<p class="dBody<button style="clear:both; margin-top:30px;" type="button" onClick="curtainClose()">Закрыть окно</button></p>
	</div>

работает все классно!
Вот только вопрос:мне позарез нужно передать данные в это всплывающее окошко, то есть у меня вывод человек из базы данных посредством цикла while, и возле каждого человечка есть ссылочка "детали". Мне нужно, чтобы как-то id передавался в это окно, чтобы в нем писались данные именно о том человека, на ссылочку возле которого я нажал!
Если можете, помогите советом плиз.. В javascript'e я далеко не силен!!
Заранее огромное спасибо!!!

Zibba 08.02.2009 13:42

<a href="" onclick="javascript:document.getElementById('dialogWindow').innerHTML='Какие то данные о первом пользователе'">Показать какие то данные о первом пользователе</a>

Если я правильно Вас понял.
Можете передавать в функцию curtainOpen() какой нибудь параметр, который будет означать идентификатор пользователя данные о котором нужно передать. И выполнять похожие манипуляции с записью данных, уже в самой функции curtainOpen()

Legolas 08.02.2009 15:40

Спасибо, Zibba!!!
Id передаётся и выводится во всплывающем окне...
Только вот проблема.. больше ничего кроме него не выводится :((
<a href='javascript:curtainOpen()'  onclick=\"javascript:document.getElementById('dialogWindow').innerHTML='$idus' \" class=mail><img src='images/mail.gif' border=0></a><br>"; }else{echo "<br><img src='images/user_unknown.gif'><br><span class='stavka1'>слот свободен</span>"; } ?>

	<div id="dialogWindow" onClick='curtainClose()'>
	<div class="dTitle">m</div>
	<p class="dBody"><button style='clear:both; margin-top:30px;' type='button' onClick='curtainClose()'>Закрыть окно</button></p>
	</div>

Раньше выводилась кнопочка "закрыть окно" и можно было содержимым его забить.. а теперь просто id и все.:(
Как бы мне вот эту проблему обойти?!

Zibba 08.02.2009 17:13

Просто строка
document.getElementById('dialogWindow').innerHTML=

заменяет все содержимое блока dialogWindow, включая и:
<div class="dTitle">m</div>
<p class="dBody"><button style='clear:both; margin-top:30px;' type='button' onClick='curtainClose()'>Закрыть окно</button></p>

Заведите внутри всплывающего окошка еще один <div> специально для информации, например <div id="content"> и выполняйте вывод информации для него.
<a href='javascript:curtainOpen()'  onclick=\"javascript:document.getElementById('content').innerHTML='$idus' \" class=mail><img src='images/mail.gif' border=0></a><br>"; }else{echo "<br><img src='images/user_unknown.gif'><br><span class='stavka1'>слот свободен</span>"; } ?>
 
    <div id="dialogWindow" onClick='curtainClose()'>
    <div class="dTitle">m</div>
    <div id="content"></div>
    <p class="dBody"><button style='clear:both; margin-top:30px;' type='button' onClick='curtainClose()'>Закрыть окно</button></p>
    </div>


Еще можете записывать информацию и создавать свой блок с контентом при помощи document.createElement() и appendChild(); Но и того что выше должно хватить для решения проблемы.

alexvb 21.04.2010 22:50

Как передать id во всплывающее окно
 
Вывожу картинки из базы в цикле. Делаю ссылки на картинки.

<a href="#" onclick="document.getElementById('wspok').style.di splay='block'; return false;" title="Всплывающее окно">
<div class='ram0' align='center'><img src = "<? echo $myrow['foto'] ?>"></div>
</a>

Вывожу во всплывающем окне дополнительную информацию.

<div id="wspok">
<?
echo "<br>".$myrow['name']."<br>";
echo '<img src="'.$myrow['foto'].'" alt="image" />'."&nbsp;";
?>

Почему то по всем ссылкам открывается только всплывающее окно с информацией по первой ссылке. Люди, помогите. JS только осваиваю. Уже мозги свернулись.


Часовой пояс GMT +3, время: 00:08.