Разместить 2 одинаковых скрипта на 1 странице
Здравствуйте, возникла такая надобность разместить 2 одинаковых скрипта на 1 странице. С этим скриптом был файл custom:
$(document).ready(function() { //Активизируем первую ссылку $(".contentnav2 a:first").addClass("active2"); //Ширина площади одной страницы var contentwidth2 = $(".contentholder2").width(); //Обще количество страниц var totalcontent2 = $(".content2").size(); //Общая ширина всего контента (всех страниц) var allcontentwidth2 = contentwidth2 * totalcontent2; //Проскальзывание контента устанавливаем на ширину, которую получили выше $(".contentslider2").css({'width' : allcontentwidth2}); //Теперь пишем новую функцию для проскальзывания и навигации rotate = function(){ //Количество раз, на которое надо прокрутить контент var slideid2 = $active2.attr("rel") - 1; //Устанавливаем дистанцию, на которую происходит единичная прокрутка var slidedistance2 = slideid2 * contentwidth2; //Удаляем активный класс $(".contentnav2 a").removeClass('active2'); //Добавляем активный класс $active2.addClass('active2'); //Анимация проскальзывания $(".contentslider2").animate({ left: -slidedistance2 }, 500 ); }; //Устанавливаем время для проведения проскальзывания rotation = function(){ play = setInterval(function(){ //Навигация следующего слайда $active2 = $('.contentnav2 a.active2').next(); if ( $active2.length === 0) { //Перемещаемся к первому слайду в навигации $active2 = $('.contentnav2 a:first'); } rotate(); //Таймер устанавливаем на 5 сек }, 6000); }; //Запускаем функцию вращения rotation(); $(".contentnav2 a").click(function() { $active2 = $(this); clearInterval(play); rotate(); rotation(); return false; }); }); и файл со стилями style.css: Код:
#wrapper { В стилях поменял название каждого класса. Да, и на странице пишу что-то такого плана: Код:
<div style="width:225px; height:324px"> первый вызываю так же, только двоички убираю... По отдельности все работает замечательно, как только я их объеденяю, работает только последний. Как быть? Да, и на заметку, знания Явы отвратителные, но с программированием дружу( C++, C#) Я изменил файл со второй функцией, переименовал в нем глобальную переменную, ошибка осталась та же. Теперь он имеет следующий вид: $(document).ready(function fnc() { //Активизируем первую ссылку $(".contentnav2 a:first").addClass("active2"); //Ширина площади одной страницы var contentwidth2 = $(".contentholder2").width(); //Обще количество страниц var totalcontent2 = $(".content2").size(); //Общая ширина всего контента (всех страниц) var allcontentwidth2 = contentwidth2 * totalcontent2; //Проскальзывание контента устанавливаем на ширину, которую получили выше $(".contentslider2").css({'width' : allcontentwidth2}); //Теперь пишем новую функцию для проскальзывания и навигации rotate = function fnc(){ //Количество раз, на которое надо прокрутить контент var slideid2 = $active2.attr("rel") - 1; //Устанавливаем дистанцию, на которую происходит единичная прокрутка var slidedistance2 = slideid2 * contentwidth2; //Удаляем активный класс $(".contentnav2 a").removeClass('active2'); //Добавляем активный класс $active2.addClass('active2'); //Анимация проскальзывания $(".contentslider2").animate({ left: -slidedistance2 }, 500 ); }; //Устанавливаем время для проведения проскальзывания rotation = function fnc(){ play = setInterval(function fnc(){ //Навигация следующего слайда $active2 = $('.contentnav2 a.active2').next(); if ( $active2.length === 0) { //Перемещаемся к первому слайду в навигации $active2 = $('.contentnav2 a:first'); } rotate(); //Таймер устанавливаем на 5 сек }, 6000); }; //Запускаем функцию вращения rotation(); $(".contentnav2 a").click(function fnc() { $active2 = $(this); clearInterval(play); rotate(); rotation(); return false; }); }); |
Это работа, и за нее обычно платят деньги.
Для таких сообщений предназначен раздел форума "Работа". Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела. ЗЫ про отладку на этом сайте вполне достаточно написано.как и про другие связанные вещи |
Цитата:
|
Цитата:
значит должны уметь отлаживать. или мне за вас отладить? |
Отлаживать умеем, вопрос не в работе скрипта, а в работе двух скриптов одновременно..Возможно здесь нужно применить что то вроде многопоточности в С++. Я не знаю нюансов этого языка. Если бы я мог сам справиться, я бы не напрягал людей зря.
|
Цитата:
Цитата:
Цитата:
а вот, если бы сел отлаживать, то ты бы увидел что в первый раз вызывается первая объявленный функция, а затем только вторая |
Да, я видел это, и даже пытался испоавить, когда во втором файле меняю function() на function2() например, скрипт перестает работать
|
Цитата:
развелось тут всяких. это форум программистов JS либо тех кто учится программировать на нем. поэтому фразы типа "я не знаю JS, помогите мне" - не канают. садись, и читай доки |
Цитата:
|
$(document).ready(function() {
второй скрипт переопределяей функцию ready, поэтому и выполняеться только второй |
Каким образом этого можно избежать?
|
Цитата:
|
Gvozd, я прислушался к Вашему совету и почитал немного о яве, и подправил второй файл, его измененный код лежит в первом сообщении.
|
Kostyn4ick,
в вашем коде, в тех местах, где вы его поправили, вы сделали это неверно прочитайте данный кусок статьи в вашем случае объявляется анонимные функции. от именованных, они отличаются (в плане синтаксиса) местом, где пишется имя функции. вы попробовали сделать из анонимной функции, именованную, при это в дальнейшем вызывая ее по имени переменной, а не по именованному отличающемуся имени. функции в JS являются такими же объектами, как и все остальное. почитайте также об областях видимости переменных в вашем коде функции объявляются в глобальной области видимости, и поэтому второе определение функции, просто затирает глобальную переменную, и в ней уже содержится функция из второго файла. вам надо сделать чтобы эти функции были объявлены локально, или же поменять ихние имена. более верным будет первый способ также, в плане общего развития почитайте о замыканиях хотя, вы сможете исправить код, и без чтения этой статьи, но она окажется полезной, для общего ознакомления. |
Gvozd, большое спасибо за такой ответ, сейчас засяду за статьи!
+1 вам) |
как я понял, мою запись $(document).ready(function() необходимо заменить на var fnc = function() и позже вызывать как fnc, или не в ту сторону иду?
|
Цитата:
я ранее упоминал те два объявления функций, которые вам следует поменять. |
Да, я помню, вы упоминали про вот - это rotate = function()
Что то я совсем не понимаю, эта функция анонимна и объявлена не через var, значит она не глобальна, или не верно? |
|
Ураааа, заработало, большое всем спасибо за помощь, теперь я понял, что ява слишком отличается от других языков, теперь буду учиться!
|
Цитата:
|
Цитата:
а вот так вот получится локально объявленная переменная. *!*var*/!* rotate = function(){ ив таком виде(не меняя имя функции) ее можно использовать в обоих скриптах |
Kostyn4ick, желательно начинать с изучения javascript, а не Jquery;)
|
Часовой пояс GMT +3, время: 01:56. |