Функция onclick для созданных потомков
Здравствуйте, уже несколько дней бьюсь.
У меня в скрипте в цикле создаются несколько изображений, которые присваиваются как потомки блока div. То есть <div><img src="" name=""><img src="" name=""></div> . Как сделать, чтобы по щелчку по одному изображению (onclick) передавалось его имя (name), или src в определенный input? То есть есть <input type="hidden" name="here"/>, в него надо записать либо name, либо сам src. Мне это надо,чтобы определить, какой аватар выбрал пользователь при регистрации. Чтобы записать адрес аватарки в базу к этому новому пользователю. В цикле создаются эти <img>, так как пользователь выбирает в списке input, к какой категории аватарка (ну там люди, животные, и прочее).:) |
Вроде все очевидно. Что именно не получается? Приведите код.
|
<script> function func(obj) {document.getElementById("inputID").value=obj.src;} </script> <img src="..." onclick="func(this)"> что-то типа. |
<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. скрипт удаления потомков приводить здесь не стал, с ним все ок. |
Вам нужно почитать про замыкания. На этом сайте есть отличная статья, и кажется даже с примером, объясняющим именно вашу ситуацию.
зы: в следующий раз код вставляйте в bb-теги. |
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", иначе путь - нормальный индентификатор картинки, я думаю |
спасибо, прочитаю эту статью.
x-yuri, спасибо за сокращение кода! просто решил делать так, как на курсах давали =) |
Часовой пояс GMT +3, время: 19:58. |