Миниигра "Найди карту".
Вложений: 1
Добрый день.
Делаю что-то типа игрушки "Найди карту". Выкладываю на стол 4 карты(картинки во вложении), вешаю на каждую событие, по которому вызывается функция обращения к соответствующей карте. <style type="text/css"> img { margin:30px 5px; cursor:pointer; border-radius:5px; } div { background-color:#999; } </style> <script type="text/javascript"> <!-- var cards= new Array("11.png","12.png","13.png","14.png","rub.png"); function opencard(num) { var img=document.getElementsByTagName("IMG")[num]; window.alert(num); img.src=cards[num]; } window.onload=function() { var img=document.getElementsByTagName("IMG") for (var i=0; i<img.length;i++) { img[i].src=cards[img.length]; img[i].onclick=opencard(i); } } //--> </script> <div align="center"> <img /> <img /> <img /> <img /><br> </div> Проблема в том что у меня карты переворачиваются не по клику а при загрузки страницы. Это связано с использованием img[i].onclick=opencard(i);. Как правильно задать события для каждой карты? |
Оно?
<!DOCTYPE html> <html> <head> <!-- <script src="http://code.jquery.com/jquery-latest.js"></script> <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> window.onload=function() { var o=document.getElementsByTagName("button") for (var i=0; i<o.length;i++) { o[i].onclick=(function (N) { return function (){alert(N);} })(i); }; }; </script> </head> <body> <button>0</button> <button>1</button> <button>2</button> </body> </html> |
ksa, wtf?
про http://learn.javascript.ru/bubbling-and-capturing не слышал? X-man, не смог спокойно смотреть на код ТС ... http://learn.javascript.ru/play/XHLNic |
Цитата:
|
ksa, нечего, просто показал косяк, если хочешь можешь по танцевать )
|
ksa, спасибо! Работает.
|
ksa, ладно ты победил, ТС за кривой код)
|
cyber, спс за способ и за инфу!
Первый раз на js пишу. |
Цитата:
И подскажи плз, почему работает только если div container идет перед скриптом в body, а при другом расположении(если перенести скрипт в head или поменять местами с div) грузится пустая страница? |
X-man, потому что скрип выполняется сразу, как загружен. И если див ниже кода, то на момент выполнения его какбэ ещё нет.
Как раз для таких случаев исползуется "window.onload=function(){" (окно.когдаЗагрузится - запустить функицю). !function - извращённый способ запустить функцию сразу после создания. |
Часовой пояс GMT +3, время: 09:41. |