Массив передается как undefined.
Делаю галлерею. Функция move() почему-то получает массив как undefined. Т.е. как будто массив jsArr вовсе не был создан, где ошибка?
Переменные: windows.cur - индекс фотографии в массиве windows.max - максимум длина массива с фотками Функции: move(): получает сдвиг (1 или -1) и массив фоток. Выводит соответствующую фотку. bigPic():выводит большую фотку в <div id="bigSample"></div> В <body>: Создается массив (позже будет массив из БД). Выводится весь массив маленьких фоток. В скрипте создаю массив JS в который переносится массив PHP. В форме, в зависимости от нажатия ('<' или '>') вызываем функцию move() с заданным сдвигом. Вот код: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Untitled Document</title> <script type="text/javascript"> window.cur = 0; window.max = 7; function move(num, arr){ alert(arr); window.cur += num; if(window.cur<0) {window.cur = 0;} if(window.cur > window.max) {window.cur = window.max;} document.getElementById("bigSample").innerHTML="<img src='img/" + arr[window.cur] + "' width='500' height='350' >"; } </script> </head> <body onload="firstLoad('img/belka.jpg')"> <div id="bigSample"></div> <?php $img_arr=array(); $img_arr[0] = 'belka.jpg'; $img_arr[1] = 'les.jpg'; $img_arr[2] = 'barsuk.jpg'; $img_arr[3] = 'gora.jpg'; $img_arr[4] = 'most.jpg'; $img_arr[5] = 'nebo.jpg'; $img_arr[6] = 'palma.jpg'; $img_arr[7] = 'sneg.jpg'; ?> <?php $path='img/'; foreach($img_arr as $img){ ?><img src="<?php echo $path.$img; ?>" width="55" height="70" onclick='bigPic("<?php echo $path.$img; ?>")' /> <?php } ?> <script type="text/javascript"> var jsArr = new Array(<?php echo implode(', ', $img_arr); ?>); </script> <form> <input type="button" name="backward" value="<" onClick="move(-1, jsArr)" /> <input type="button" name="forward" value=">" onClick="move(+1, jsArr)"/> </form> </body> </html> |
Потому что
var jsArr = new Array(...)- это javascript, а <input type="button" name="backward" value="<" onClick="move(-1, jsArr)"/>- это не javascript, а HTML-разметка, которая в этом месте не "понимает", что такое jsArr. Создавайте элемент "backward" тоже средствами javascript: var btn = document.createElement('input') ... потом вешайте на него btn.onclick = function()... |
Вы про консоль ошибок слышали? Первым делом нужно было заглянуть туда.
Посмотрите на код, генерируемый php в месте инициализации переменной jsArr. |
Странно, но создаваемая мною функция move() так же часть JavaScript но вызывать ее получается. Где можно поподробнее почитать эту тему?
В какой программе существует консоль ошибок? |
|
Цитата:
|
Цитата:
|
Цитата:
<div id="aaa" name="bbb">privet</div> <script type="text/javascript"> function move1(x){alert(x.innerHTML)} function move2(x){alert(x.innerHTML)} </script> <input type="button" onclick="move1(aaa)"> <br> <input type="button" onclick="move2(bbb)"> В данном случае функция move1() работает, а move2() - не работает, потому что идентификатор объекта, переданный в move() понимается javascript_ом, а имя объекта - не понимается. Извиняюсь. |
Цитата:
Но проще всего поставьте alert(jsArr) после строки var jsArr = new Array(<?php echo implode(', ', $img_arr); ?>); и Вы увидите, что он из себя представляет. или здесь: input type="button" name="forward" value=">" onClick="alert(jsArr)"/> |
Цитата:
|
Часовой пояс GMT +3, время: 19:42. |