Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разместить 2 одинаковых скрипта на 1 странице (https://javascript.ru/forum/misc/10860-razmestit-2-odinakovykh-skripta-na-1-stranice.html)

Kostyn4ick 25.07.2010 00:23

Разместить 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 {
        width:225px;
        overflow:visible;
}

#slider {
        position:relative;
        padding:0px;
        overflow:hidden;

}
.content1 {
        width:220px;
        padding:0px;
        margin-left:4px;
        margin-right:1px;
        top:65px;
        float: left;
        position: relative;
}
.inslider a {
        text-decoration:none;
}
.contentholder {
        height:324px;
        width: 225px;
        overflow: hidden;
        position: relative;
}
.contentslider {
        position: absolute;
        top: 0; left: 0;
}
.imgslider img {
        float: left;
}
.contentnav {
        position: absolute;
        bottom: 0px; left:0px;
        height:30px;
        z-index: 100;
        text-align: center;
        line-height: 30px;
        border: 1px solid #000;
        border: 1px solid #000;
        padding:0px;
}
.contentnav a {
        padding: 5px;
        margin-left:0px;
        text-decoration: none;
        color: #7c7c7e;
}
.contentnav a.active {
        font-weight: bold;
        color:#FFF;
        background: #603;
}

Для решения этой проблемы я создал второй файд custom2.js и style2.css

В стилях поменял название каждого класса.
Да, и на странице пишу что-то такого плана:
Код:

<div style="width:225px; height:324px">
      <script src="custom2.js" type="text/javascript"></script>
<div id="wrapper2">
<div id="slider2">
<div class="inslider2">
    <!-- Контейнер контента  -->
<div class="contentholder2">
<div class="contentslider2">

<div class="content2">
<h1>Заголовок</h1>
<p>Текст</p>
</div>


<div class="content2">
<h1>Заголовок</h1>
<p>Текст</p>
</div>



<div class="content2">
<h1>Заголовок</h1>
<p>Текст</p>
</div>



<div class="content2">
<h1>Заголовок</h1>
<p>Текст</p>
</div>

</div>
</div>
<div class="contentnav2">
      <a rel="1" href="#">1</a>
      <a rel="2" href="#">2</a>
      <a rel="3" href="#">3</a>
      <a rel="4" href="#">4</a>
 </div>
</div>

</div>
</div>
</div>

(это был вызов для второго скрипта)
первый вызываю так же, только двоички убираю...

По отдельности все работает замечательно, как только я их объеденяю, работает только последний.
Как быть?

Да, и на заметку, знания Явы отвратителные, но с программированием дружу( 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;
});
});

Gvozd 25.07.2010 01:03

Это работа, и за нее обычно платят деньги.
Для таких сообщений предназначен раздел форума "Работа".

Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела.

ЗЫ про отладку на этом сайте вполне достаточно написано.как и про другие связанные вещи

Kostyn4ick 25.07.2010 01:08

Цитата:

Сообщение от Gvozd (Сообщение 65041)
Это работа, и за нее обычно платят деньги.
Для таких сообщений предназначен раздел форума "Работа".

Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела.

ЗЫ про отладку на этом сайте вполне достаточно написано.как и про другие связанные вещи

На мой взгляд это не работа, а просьба помочь разобраться в проблеме, я описал выше действия, которые предпринимал, и увы уперся в "стену" незнания, и обратился за помощью сюда.

Gvozd 25.07.2010 09:49

Цитата:

Сообщение от Kostyn4ick
уперся в "стену" незнания

программировать умеете?
значит должны уметь отлаживать.
или мне за вас отладить?

Kostyn4ick 25.07.2010 11:36

Отлаживать умеем, вопрос не в работе скрипта, а в работе двух скриптов одновременно..Возможно здесь нужно применить что то вроде многопоточности в С++. Я не знаю нюансов этого языка. Если бы я мог сам справиться, я бы не напрягал людей зря.

Gvozd 25.07.2010 12:00

Цитата:

Сообщение от Kostyn4ick
var contentwidth2

вот почему-то локальные переменные внутри функций ты переименовал, хотя они никак между собой не конфликтуют
Цитата:

Сообщение от Kostyn4ick
rotate = function(){

Цитата:

Сообщение от Kostyn4ick
rotation = function()

а вот глобальные функции, почему-то оставил одинаково названными.

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

Kostyn4ick 25.07.2010 12:55

Да, я видел это, и даже пытался испоавить, когда во втором файле меняю function() на function2() например, скрипт перестает работать

Gvozd 25.07.2010 13:34

Цитата:

Сообщение от Kostyn4ick
меняю function() на function2()

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

садись, и читай доки

Kostyn4ick 25.07.2010 13:38

Цитата:

Сообщение от Gvozd (Сообщение 65080)
иди, блин, читай учебник по JS
развелось тут всяких.
это форум программистов JS
либо тех кто учится программировать на нем.
поэтому фразы типа "я не знаю JS, помогите мне" - не канают.

садись, и читай доки

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

DooMer 26.07.2010 10:48

$(document).ready(function() {

второй скрипт переопределяей функцию ready, поэтому и выполняеться только второй


Часовой пояс GMT +3, время: 13:06.