Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.04.2009, 23:32
Новичок на форуме
Отправить личное сообщение для Groonel Посмотреть профиль Найти все сообщения от Groonel
 
Регистрация: 23.04.2009
Сообщений: 3

Функция onclick для созданных потомков
Здравствуйте, уже несколько дней бьюсь.
У меня в скрипте в цикле создаются несколько изображений, которые присваиваются как потомки блока div.
То есть <div><img src="" name=""><img src="" name=""></div> .

Как сделать, чтобы по щелчку по одному изображению (onclick) передавалось его имя (name), или src в определенный input?
То есть есть <input type="hidden" name="here"/>, в него надо записать либо name, либо сам src.

Мне это надо,чтобы определить, какой аватар выбрал пользователь при регистрации. Чтобы записать адрес аватарки в базу к этому новому пользователю.

В цикле создаются эти <img>, так как пользователь выбирает в списке input, к какой категории аватарка (ну там люди, животные, и прочее).
Ответить с цитированием
  #2 (permalink)  
Старый 23.04.2009, 23:43
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Вроде все очевидно. Что именно не получается? Приведите код.
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2009, 10:31
Профессор
Отправить личное сообщение для AzriMan Посмотреть профиль Найти все сообщения от AzriMan
 
Регистрация: 27.02.2009
Сообщений: 215

<script>
function func(obj)
{document.getElementById("inputID").value=obj.src;}
</script>
<img src="..." onclick="func(this)">

что-то типа.
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2009, 16:06
Новичок на форуме
Отправить личное сообщение для Groonel Посмотреть профиль Найти все сообщения от Groonel
 
Регистрация: 23.04.2009
Сообщений: 3

<script type="text/javascript">

//массивы с именами аватарок;
var men=new Array('p1','p2','p3','p4','p5','p6','p7','p8','p9' );
var animals=new Array('a1','a2','a3','a4','a5','a6','a7','a8','a9' );

//функция для добавления аватаров
function add_ava(){

//обхожу выпадающий список в select name=filter;

var selection=document.forms['registration'].elements['filter'].options;
for (var k=0; k<selection.length; k++){
if (selection[k].selected==true){ava_type=selection[k].value;}
}

//проверяю, что выбрано в select name=filter;
switch (ava_type){

case 'people':
for (var i=0;i<men.length; i++){
var ava1=document.createElement('IMG');
ava1.setAttribute('src','images/avatars/'+men[i]+'.gif');

//вставляю img в блок <div id="ava">;
document.getElementById('ava').appendChild(ava1);

//и вот эта функция, с которой проблема;
ava1.onclick= function() {document.forms["registration"].elements["dop"].value=ava1.src;};

}
break;

case 'animals': то же самое, но для другого массива..

</script>

html код:
<form name="registration>
<select name="filter">
<option value="people">Люди</option>
<option value="animal">Животные</option>
</select>

<input type="button" onclick="add_ava();" value="Показать"/>
<input type="hidden" value="" name="dop" />

<div id="ava"></div>

</form>

/////////////
Вот код.
Проблема-то такая. По щелчку на созданные аватарки в input вставляется src последней картинки (images/avatars/p9.gif).
Посоветуйте, как улучшить, изменить этот код.. Не могу понять.

P.S. скрипт удаления потомков приводить здесь не стал, с ним все ок.
Ответить с цитированием
  #5 (permalink)  
Старый 24.04.2009, 16:53
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Вам нужно почитать про замыкания. На этом сайте есть отличная статья, и кажется даже с примером, объясняющим именно вашу ситуацию.
зы: в следующий раз код вставляйте в bb-теги.
Ответить с цитированием
  #6 (permalink)  
Старый 24.04.2009, 17:17
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

var selection=document.forms['registration'].elements['filter'].options; 
for (var k=0; k<selection.length; k++){
if (selection[k].selected==true){ava_type=selection[k].value;}
}

//проверяю, что выбрано в select name=filter;
switch (ava_type){

->
var type = document.registration.filter.value;
switch( type ) {

можно и так:
ava1.setAttribute('src','images/avatars/'+men[i]+'.gif');
->
ava1.src = 'images/avatars/'+men[i]+'.gif';

если список картинок хранится в БД, то можно их id вставлять в input type="hidden", иначе путь - нормальный индентификатор картинки, я думаю
Ответить с цитированием
  #7 (permalink)  
Старый 24.04.2009, 17:35
Новичок на форуме
Отправить личное сообщение для Groonel Посмотреть профиль Найти все сообщения от Groonel
 
Регистрация: 23.04.2009
Сообщений: 3

спасибо, прочитаю эту статью.

x-yuri, спасибо за сокращение кода! просто решил делать так, как на курсах давали =)
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск