Теоретический вопрос о времени когда начинать обрабатывать DOM

craz

Нестандартное звание
Теоретический вопрос о времени когда начинать обрабатывать DOM

Вопрос носит теоритический характер, то есть для себя я хочу выяснить как правильно в связке PHP+Javascript начинать обрабатывать DOM, все мануалы которые я находил по Javascript конечно же не учитывают работу php для формирования html кода. и соответсвенно если не говорить об AJAX работают уже с готовым htmlю Возник сопр на почве создания галереи изображений:
Мнения:
1)до того как сформирована страницы забить массив Javascript адресами картинок, и потом при взаимодействие страницы и пользователя подставлять нужные изображения в контейнеры
Минусы: Код как мне кажеться не являеться простым в интеграции; есть вопросы по его работе
2)выгрузить все изображения на страницу вот таким оброзом а потом уже javasript`ом скрывать изображения и показывать другой блок изображений
PHP:
foreach ($Data_foto as $row) {
	echo "<td id='$i' style='display:none'><img  src='{$Model->prop_thumb_width($row['link'],65)}' /></td>";  
            $i++;  				
}
Минусы: я сейчас еще не очень представляю, вообще что из этого правильно, а что нет. Ну и второй вариант не написан.

Очень хочеться услышать ваше мнение
 

phprus

Moderator
Команда форума
как правильно в связке PHP+Javascript начинать обрабатывать DOM, все мануалы которые я находил по Javascript конечно же не учитывают работу php для формирования html кода
Читай PHP FAQ: Самые основы. Как работает PHP. до полного просветления.

Молодец, мнения ты привел, НО где вопрос?
 

craz

Нестандартное звание
ссылку которую вы мне решили показать я читал гдето наверное года полтора назад, может не ее конкретно(т.е. не думаю что сейчас должно последовать обсуждение какой конкретной статьи), просветление последовало, сейчас вроде как тоже освежил просветление опять же никуда не исчезло, мой вопрос находиться в ветке форума называемой "PHP+javascript", а не "че выдается php скриптом и выдается браузером пользователю после выполнения php скрипта", это я тоже очень хорошо себе представляю. Так же вы очень хорошо поняли что вопрос тут возможно сформулирован не очень точно, а точнее расплывчато, потому что javascript для меня тема новая в вебе, нет, даже не так не совсем мне понятная тема, и далеко не новая, но от этого все таки не более понятная.

Сейчас попробую сформулировать вопрос

http://phpclub.ru/paste/index.php?show=2255

как правильнее?
1)первый не правильно отрабатывающий скрипт переписать - скрипт первый писал не я...
2)доделать второй скрипт потому что он работает не с php переменнными в плаен javascript а уже с готовым html - его щас пишу я...
Понимаете без вашей помощи, мы не сможем решить вопрос похожий на некий холи вар.

как утверждаю я javascript для "простых" оперций на странице не должен ничего знать и ничего брать из php скрипта, а как утверждает мой колега генерировать javascript надо именно на стадии выдачи всей этой информации браузеру а не после? Я надеюсь на ваше понимание, потому что вы как люди умные согласитесь что правильно поставленная задача это более 50% ее выполнения. А поскольку за неимением опыта и времени на устранение его отсутствия поставить задачу правильно не получаеться очень хочеться услышать ваше мнение...



З.ы. конечно я понимаю что задача не 15ти минут и проще послать в мануал для самых мелких но ответ все таки хочеться услышать
 

phprus

Moderator
Команда форума
craz
php переменнными в плаен javascript а уже с готовым html
javascript ПРИНЦИПИАЛЬНО не может работать с PHP-переменными, так как к моменту запуска выполнения JavaScript-кода PHP-скирипт уже давно завершил свою работу.

Сейчас попробую сформулировать вопрос
То, что ты написал - это решение, а не вопрос. Попробуй сформулировать вопрос, а именно написать что у тебя есть, что ты хочешь получить в результате и как ты пытался это получить(При том без приведения огромного количества кода).
Шаблон вопроса:
У меня есть массив мюмзиков, я хочу рисовать этих мюмзиков на шорьках, при этом я пытался делать это при помощи аттрактора. Но вместо рисунка я получил ускоритель.
Ну и так-далее.
 

Glazyrin Sergey

Новичок
Я конечно не знаю что там за задача, но помоему дом надо обрабатывтаь когда ты можешь уже с ним работать, а это наступит с того момента как сработает событие DOMOnReady - btw - под ие его нет - нады эмулировать -
Почитай про Yahoo,util.event.DOMOnReady
Сорри если не в тему сказал
 

craz

Нестандартное звание
phprus вы совершенно правы почти во всем но мне надо не решение задачи получить, а услышать общее утверждение.
javascript ПРИНЦИПИАЛЬНО не может работать с PHP-переменными,
это я замечательно понимаю я имел ввиду(кстати извеняюсь за ошибку она наверное имеет принципиальный характер в вопросе) что когда мы пишем вот так

Pics[<?=$key?>] = Object();
, то это помоему не правильно(понятное дело что JS на этапе когда отработа php-script видит в этом месте всего лишь текст),

правильнее вывести весь html код, php-скриптом и потом с ним работать(почему я считаю это более правильным, потому что наше оформление страницы которое мы будем делать с помощью JS, будет отделенно от генерации самой этой страницы, и код будет более понятным)


так это или нет?

з.ы. ваще конечно понятно что надо писать так как 1)умеешь 2)чтоб работало , но ведь есть какие то рекомендации по взаимодействию этой связки PHP+Javascript, то есть к примеру формируем код потом пишем скрипт на готовый html, или другая точка зрения, генерируем код уже подставляя в JS известные нам из php скрипта данные

Автор оригинала: Glazyrin Sergey
Я конечно не знаю что там за задача, но помоему дом надо обрабатывтаь когда ты можешь уже с ним работать, а это наступит с того момента как сработает событие DOMOnReady - btw - под ие его нет - нады эмулировать -
Почитай про Yahoo,util.event.DOMOnReady
Сорри если не в тему сказал
спасибо за ответ, даже если он не много не в тему, почитал про util.event.DOMOnReady много узнал...

-~{}~ 25.01.09 20:28:

кстати а подсказать готовое решение может кто нибудь сможет, нужна галерея, с перелистованием фотографий по нажатию на конпки: влево вправо, "формированию" выбранной фотографии в центре страницы, внизу чтоб генерировались елементы основной картинки, может хотя бы видели где нибудь такое, буду супер пупер признателен... а то чето с JS как то тяжеловато разбираться в авральные сроки...
 

phprus

Moderator
Команда форума
craz
Pics[<?=$key?>] = Object();
, то это помоему не правильно(понятное дело что JS на этапе когда отработа php-script видит в этом месте всего лишь текст),
Когда мы пишем так, то конструкция <?=$key?> отработает в момент выполнения php-скрипта, а клиенту, который выполняет JS, придет код в котором <?=$key?> будет заменено на результат, те на значения этой переменной. Так что это один вполне корректный способ генерации JS кода при помощи PHP.

Если говорить про абстрактное взаимодействие между JS и внешними источниками данных, то я обычно использую для этого JSON.

--------------------------------------

Перелистывание фотографий можно реализовать путем изменения атрибута src тага img в котором будет выводиться картинка. В этом случае в наиболее простом варианте тебе понадобится что-то типа массива(в javascript-коде) в котором будут ссылки на все имеющиеся картинки и дополнительная информация о них (если нужно). При том как ты будешь генерировать этот массив роли не играет, так как PHP-скрипту безразлично что выводить - html или js-код. Но учти, что это решение не подойдет для большого количества картинок.

а то чето с JS как то тяжеловато разбираться в авральные сроки...
А ты уверен, что твою задачу необходимо решать именно на JS? Может-быть требованием удовлетворяет решение без JS, где нажатия на кнопку и картинки будут вызывать перезагрузки страницы?
А вот после того как будет реализован такой вариант уже можно будет заниматься навешиваением JS-возможностей таких как смена картинок по нажатию кнопок без перезагрузки страницы и т.д.
 

craz

Нестандартное звание
вот! вот теперь я могу вас поблагодарить с чистой душой все что нужно я для себя выяснил, в плане теории. я был не прав)

Просто реализация более сложного в плане написания алгоритма, который написал не я, и который мне приходиться втсавлять и пытаться оптимизировать(даже не оптимизировать, а просто заставить правильно работать) для меня без знания JS была трудновата, а ошибки по всем моим дебагам были именно в JS скрипте, а не в php скрипте.
Перелистывание фотографий можно реализовать путем изменения атрибута src тага img в котором будет выводиться картинка. В этом случае в наиболее простом варианте тебе понадобится что-то типа массива(в javascript-коде) в котором будут ссылки на все имеющиеся картинки и дополнительная информация о них (если нужно). При том как ты будешь генерировать этот массив роли не играет, так как PHP-скрипту безразлично что выводить - html или js-код. Но учти, что это решение не подойдет для большого количества картинок.
То есть работа с document.getElementById(arr).style.display не приемлима? если да то можно послать куда нить чтоб я почитал почему JS не стоит давать власть над дисплеями элементов? - все вроде нашел эот типа изза прогрузки в кеш изображений? чтоб потом можно было их использовать? а если типа выгрузить эти все изображения в контейнер к примеру <div style="display:block"> а потом менять это свойство, то это чревато миганием или чем еще? и еще вопрос, именно через пхп вставки такой массив надо организовать?ну то есть через конструкции <?=$value?>?

А ты уверен, что твою задачу необходимо решать именно на JS? Может-быть требованием удовлетворяет решение без JS, где нажатия на кнопку и картинки будут вызывать перезагрузки страницы?
А вот после того как будет реализован такой вариант уже можно будет заниматься навешиваением JS-возможностей таких как смена картинок по нажатию кнопок без перезагрузки страницы и т.д.
К сожалению уверен.

Еще раз спасибо за ответы.


З.ы. Кстати мой уровень задавать вопросы наверное вырос за полтора года с того момента как я только зарегистрировался на этом форуме, потому что раньше кроме
Читай PHP FAQ: Самые основы. Как работает PHP. до полного просветления.





Молодец, мнения ты привел, НО где вопрос?
раньше получить более развернутые ответы не получалось)
 

phprus

Moderator
Команда форума
craz
То есть работа с document.getElementById(arr).style.display не приемлима?

Почему не приемлема? Это тоже решение, которое имеет право на жизнь. То, что я не описал этот метод в своем сообщении не значит что он плохой и не имеет права на жизнь.
Только id у html-тагов не может начинаться с цифры, по этому я бы добавил к цифровому номеру какой-либо буквенный префикс.

если да то можно послать куда нить чтоб я почитал почему JS не стоит давать власть над дисплеями элементов?
Почему не стоит? Если это удовлетворяет логике работы приложения, то этот метод применяется и очень и очень часто.

и еще вопрос, именно через пхп вставки такой массив надо организовать?ну то есть через конструкции <?=$value?>?
Тебе нужно сформировать нечто типа списка имеющихся фотографий. Как я понимаю информация об этом есть у тебя где-то на сервере, по этому для формирования этого списка можно применять php. А вот будет ли реализован этот список как JS-массив или как набор div-ов у которых ты будешь менять style.display это зависит от того как ты будешь решать эту задачу. Оба способа имеют право на жизнь.

К сожалению уверен.
Кстати я бы рекомендовал делать сайт так, чтобы большая часть функциональности была доступна и пользователям без JavaScript, так как именно таким сайт увидят поисковые роботы.
 

craz

Нестандартное звание
Кстати я бы рекомендовал делать сайт так, чтобы большая часть функциональности была доступна и пользователям без JavaScript, так как именно таким сайт увидят поисковые роботы.
хм.. а кстати блин даже чето не подумал, заказчик давай делай вот так и так как там и там то, ну вот и зацепился за js, но я не думаю что роботам интересны картинки? или я ошибаюсь? всмысле сео может пострадать изза этого?

З.Ы. очень классно все расписали) очень большое спасибо! Вот теперь задача как будто на листке лежит перед глазами, ну надеюсь теперь не будет много проблем.
 

phprus

Moderator
Команда форума
всмысле сео может пострадать изза этого?
Вот этого я не знаю.
Если там только картинки, то я думаю ничего страшного не будет если их не увидят роботы.
 
Сверху