Здравствуйте. Небольшая предыстория: Решил сделать так, чтоб, на сайте, при клике на фото оно увеличивалось в том же окне. Здесь http://jquerytools.github.io/demos/overlay/index.html нашел как это сделать. Добавил в css файл соответствующий код. В хэдэре подключил библиотеку jQueryTools. Сама jQuery уже была подключена ранее. В футер добавил скрипт Код (Text): <script> $("img[rel]").overlay(); </script> На главной странице получился такой код Код (Text): <div id="triggers"> <img src="<?php echo Product::getImage($product['id']); ?>" <?php echo Product::getRel($product['id']); ?> alt=""/> </div> <div class="simple_overlay" <?php echo Product::getMies($product['id']); ?>><!--бокс для увеличенного фото продукта--> <a class="close"></a> <!-- large image --> <img src="<?php echo Product::getImage($product['id']); ?>" alt="" /> </div><!--бокс для увеличенного фото продукта--> Методы getRel и getMies возвращают rel="#mies" и id="mies" соответственно, с id продукта на конце. И всё работает! Никаких нареканий. Решаю осуществить тоже самое на странице товара. Хэдер и футер отдельными файлами и подключены ко всем страницам сайта, так что в них не лезу. Как и в scc. Получается такой код Код (Text): <div id="triggers"> <img id="largeImg" src="<?php echo Product::getImage($product['id']); ?>" <?php echo Product::getRel($product['id']); ?> alt="Фото 1" /> </div> <div class="simple_overlay" <?php echo Product::getMies($product['id']); ?>> <img src="<?php echo Product::getImage($product['id']); ?>" alt="" /> </div> Но он не работает! И я не могу найти проблему. Пробовал убирать id="largeImg" и делать код абсолютно идентичным, не помогает. Все php скрипты работают исправно. Пощупать странички можно тут http://test.lilisava.ru/ - главная. http://test.lilisava.ru/product/59 - страничка товара.
Можно попробовать, но этот скрипт же от другой библиотеки зависит? Или я не правильно понимаю? --- Добавлено --- Я совсем новичок, я не знаю как это
Пробежался по мануалу особого ничего не нашел на счет функции overlay(), есть только дополнения чтобы работала данная кофеварилка. --- Добавлено --- просто код залей в новый скрипт.js и подключи, выйдет ли..
Поищи информацию по отладке/debug, её можно и в браузере делать, например в google chrome есть инструменты разработчика.
Если это console в chrome, то там тишина. Я так понимаю там что-нибудь появляется только когда есть ошибка? --- Добавлено --- Там есть одинаковая ошибка при загрузке обеих страниц, так что вряд ли дело в ней. Говорит что overlay not a function. После этого молчит.
а ты сам должен везде по своему коду распихать console.log('dfdff');. Но я хочу скзать, что в браузере есть норм отладка с брейкпоинтами. Ты почитай.
ты сам можешь там проследить за ходом всей программы, чтобы убедиться, что всё работает как надо или найти место где что-то сломалось
И так, дебагер ведет себя идентично на обеих страницах. Console выдает сначала Uncaught TypeError: $(...).overlay is not a function Потом Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/. И в конце XMLHttpRequest cannot load http://cdn.jquerytools.org/1.2.6/full/jquery.tools.min.js. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. Но выдает все это на обеих страницах, значит дело не в этом?
Попробовал подключить это дело на самую простую страницу сайта. На ней кроме слайдера с фотками вообще толком ничего нет. И опять не получается... Что-то мной упущено из виду, но я не могу понять что...
Отладка упущена, надо проследить за ходом программы, но тут нужно понимать что хочешь и как всё работает. Можешь сделать живой пример, возможно кто-то посмотрит в чём причина, ты по какой книге HTML и JavaScript изучаешь?
Беда наверно как раз в том что JavaScript толком не изучен. Я читал http://anton.shevchuk.name/jquery-book/ и http://learn.javascript.ru/javascript-specials но даже не пытался писать скрипты самостоятельно. Поэтому и нашел готовый. И ладно бы его просто не получилось применить к сайту, так получилось же... --- Добавлено --- С HTML дело давно было, уже и не помню что читал. Освежал в памяти тут http://www.zvirec.com/html_sod.php и на http://htmlbook.ru/
Нашел в чем был косяк! Оказывается когда я настраивал скрипт на главной странице, он отказывался работать из внешнего файла и я прописал его прямо в том же файле, а потом еще и в footer. Теперь если я вставляю скрипт в файл страницы товара он работает. Вопрос 1: Почему скрипт не работает из внешнего файла? Вопрос 2: На странице товара, в случае если у товара две фотки, то под большим фото появляются миниатюрки, при клике на которые основное фото переключается. за это отвечает такой вот скрипт Код (Javascript): $(document).ready(function(){ $(".thumbs a").click(function(){ var largePath = $(this).attr("href"); var largeAlt = $(this).attr("title"); $("#largeImg").attr({ src: largePath, rel: largeAlt }); return false; }); }); Я его немного изменил чтобы помимо адреса картинки он менял и атрибут rel. И он меняет. В итоге код вот такой HTML: <div id="triggers"> <img id="largeImg" src="<?php echo Product::getImage($product['id']); ?>" rel="#mies1"/> </div> <div class="simple_overlay" id="mies1"> <img src="<?php echo Product::getImage($product['id']); ?>" alt="" /> </div> <div class="simple_overlay" id="mies2"> <img src="<?php echo Product::getSecondImage($product['id']); ?>" alt="" /> </div> </div> <p class="thumbs"> <a href="<?php echo Product::getImage($product['id']); ?>" title="#mies1"> <img src="<?php echo Product::getImageThumb($product['id']); ?>"> </a> <a href="<?php echo Product::getSecondImage($product['id']) ;?>" title="#mies2"> <img src="<?php echo Product::getSecondImageThumb($product['id']) ;?>"> </a> </p> Основное фото переключается, атрибут rel меняется с "#mies1" на "#mies2", и по логике увеличиваться должно уже второе фото. Но нет, все равно увеличивается первое. Это как то можно исправить?
тебе надо освоить отладку. Возможно ты прописал его относительным путём. и он не грузится. Открываешь вкладку запросов и видишь, что часть запросов на файлы страницы обломилась - идёшь выяснять. если скрипт стоит ДО jquery - от не отработает, и ругнётся в консоль. Возможно у тебя где-то опечатка в селекторе, и он не видит элемента. Короче надо дебагать. надо дебагать. На вид оно должно работать как задумано.
Может быть посоветуете какой-нибудь ресурс? По отладке везде все очень поверхностно написано, мол тыкай Ctrl+Shift+I и дебагай. А подробностей ни каких... --- Добавлено --- Если убрать вызов из текущего файла и подключить из внешнего, то перестает работать и ругается в консоль, все как вы говорите. Пишет Uncaught TypeError: $(...).overlay is not a function И мне кажется странным что ссылается он при этом не на overlay.js которым я подключаю скрипт а на jquery.js Вот еще: если я убираю из overlay.js обрамление в виде $(document).ready(function... то ошибка та же но ссылается уже на overlay.js
ну ты написал строку она не пашет почему? пишет - нет такого метода у этого объекта почему? надо сделать консоль.лог объекта, и выяснить, что там сидит Это если ты уверен, что там оно должно быть. Если ты не уверен, что он там должен быть, то выясни, должен ли. С чего ты решил, что он там должен быть?