2 очень похожих js-кода на 1 странице. Как изолировать друг от друга их?
Уважаемые мастера своего дела. Как сделать так чтобы процессы, проходящие в данном скрипте были только в нём, и не вышли за его пределы? Требуется исполнить два таких кода на одной и той же странице, (код выполняет прокрутку 2х галерей).
Извините за мою терминологию, я не знаю проф. терминов. Мне дали подсказку, что их как то можно обернуть в функцию... но как... как это делают в DIV?:lol: приведите пожалуйста конечный вариант кода. посоветовали что то типа того : (function(w) { w.easeScroll = {/* тут уже укажите все ваши методы, которые начинаются с this */ } })(window) Но я не смог применить даже этуконструкцию!! моё развитие пока на уровне css//html.. this.easyscroll = function(){ // id of the container element var id = "myContent"; // navigation buttons text var nav = ["Scroll Up", "Scroll Down", "Reset"]; // id for each navigation button (OPTIONAL) var navId = ["btnUp", "btnDown", "btnReset"]; // movement speed var speed = 5; // desired height of the container element (in pixels) var height = 314; // // END CONFIG // do not edit below this line (unless you want to of course :) ) // var obj = document.getElementById(id); obj.up = false; obj.down = false; obj.fast = false; var container = document.createElement("div"); var parent = obj.parentNode; container.id="easyscroll"; parent.insertBefore(container,obj); parent.removeChild(obj); container.style.position = "relative"; container.style.height = height + "px"; container.style.overflow = "hidden"; obj.style.position = "absolute"; obj.style.top = "0"; obj.style.left = "0"; container.appendChild(obj); var btns = new Array(); var ul = document.createElement("ul"); ul.id="easyscrollnav"; for (var i=0;i<nav.length;i++){ var li = document.createElement("li"); li.innerHTML = nav[i]; li.id = navId[i]; btns.push(li); ul.appendChild(li); }; parent.insertBefore(ul,container); btns[0].onmouseover = function(){ obj.up = true; this.className = "over"; }; btns[0].onmouseout = function(){ obj.up = false; this.className = ""; }; btns[1].onmouseover = function(){ obj.down = true; this.className = "over"; }; btns[1].onmouseout = function(){ obj.down = false; this.className = ""; }; btns[0].onmousedown = btns[1].onmousedown = function(){ obj.fast = true; }; btns[0].onmouseup = btns[1].onmouseup = function(){ obj.fast = false; }; btns[2].onmouseover = function(){ this.className = "over"; }; btns[2].onmouseout = function(){ this.className = ""; }; btns[2].onclick = function(){ obj.style.top = "0px"; }; this.start = function(){ var newTop; var objHeight = obj.offsetHeight; var top = obj.offsetTop; var fast = (obj.fast) ? 2 : 1; if(obj.down){ newTop = ((objHeight+top) > height) ? top-(speed*fast) : top; obj.style.top = newTop + "px"; }; if(obj.up){ newTop = (top < 0) ? top+(speed*fast) : top; obj.style.top = newTop + "px"; }; }; obj.interval = setInterval("start()",50); }; // // script initiates on page load. // this.addEvent = function(obj,type,fn){ if(obj.attachEvent){ obj['e'+type+fn] = fn; obj[type+fn] = function(){obj['e'+type+fn](window.event );} obj.attachEvent('on'+type, obj[type+fn]); } else { obj.addEventListener(type,fn,false); }; }; addEvent(window,"load",easyscroll); |
(function() { var easyscroll = ... var addEvent = ... addEvent(window,"load",easyscroll); }()); Но вообще код убогий, а дублирование одинакового кода - ещё хуже, тем более плодятся одинаковые id которых быть не должно. Надо всё нах*й переделывать. Впрочем работать будет, а поскольку ты не шаришь вообще, то учить тя смысла нет.=\ |
Цитата:
сделал так: код первый (function() { var easyscroll = function(){ // id of the container element var id = "myContent"; // navigation buttons text var nav = ["Scroll Up", "Scroll Down", "Reset"]; // id for each navigation button (OPTIONAL) var navId = ["btnUp", "btnDown", "btnReset"]; // movement speed var speed = 5; // desired height of the container element (in pixels) var height = 314; // // END CONFIG // do not edit below this line (unless you want to of course :) ) // var obj = document.getElementById(id); obj.up = false; obj.down = false; obj.fast = false; var container = document.createElement("div"); var parent = obj.parentNode; container.id="easyscroll"; parent.insertBefore(container,obj); parent.removeChild(obj); container.style.position = "relative"; container.style.height = height + "px"; container.style.overflow = "hidden"; obj.style.position = "absolute"; obj.style.top = "0"; obj.style.left = "0"; container.appendChild(obj); var btns = new Array(); var ul = document.createElement("ul"); ul.id="easyscrollnav"; for (var i=0;i<nav.length;i++){ var li = document.createElement("li"); li.innerHTML = nav[i]; li.id = navId[i]; btns.push(li); ul.appendChild(li); }; parent.insertBefore(ul,container); btns[0].onmouseover = function(){ obj.up = true; this.className = "over"; }; btns[0].onmouseout = function(){ obj.up = false; this.className = ""; }; btns[1].onmouseover = function(){ obj.down = true; this.className = "over"; }; btns[1].onmouseout = function(){ obj.down = false; this.className = ""; }; btns[0].onmousedown = btns[1].onmousedown = function(){ obj.fast = true; }; btns[0].onmouseup = btns[1].onmouseup = function(){ obj.fast = false; }; btns[2].onmouseover = function(){ this.className = "over"; }; btns[2].onmouseout = function(){ this.className = ""; }; btns[2].onclick = function(){ obj.style.top = "0px"; }; this.start = function(){ var newTop; var objHeight = obj.offsetHeight; var top = obj.offsetTop; var fast = (obj.fast) ? 2 : 1; if(obj.down){ newTop = ((objHeight+top) > height) ? top-(speed*fast) : top; obj.style.top = newTop + "px"; }; if(obj.up){ newTop = (top < 0) ? top+(speed*fast) : top; obj.style.top = newTop + "px"; }; }; obj.interval = setInterval("start()",50); }; // // script initiates on page load. // var addEvent = function(obj,type,fn){ if(obj.attachEvent){ obj['e'+type+fn] = fn; obj[type+fn] = function(){obj['e'+type+fn](window.event );} obj.attachEvent('on'+type, obj[type+fn]); } else { obj.addEventListener(type,fn,false); }; }; addEvent(window,"load",easyscroll); }()); код второй (function() { var easyscrollvg = function(){ // id контейнера элемента, который нужнзо проокрутить var id = "unique_id"; // текст в кнопках навигации var nav = ["Вверх ", "Вниз ", "Сброс "]; // id for each navigation button (OPTIONAL) var navId = ["btnUpvg", "btnDownvg", "btnResetvg"]; // movement speed var speed = 5; // desired height of the container element (in pixels) var height = 296; // // END CONFIG // do not edit below this line (unless you want to of course :) ) // var obj = document.getElementById(id); obj.up = false; obj.down = false; obj.fast = false; var container = document.createElement("div"); var parent = obj.parentNode; container.id="easyscrollvg"; parent.insertBefore(container,obj); parent.removeChild(obj); container.style.position = "relative"; container.style.height = height + "px"; container.style.overflow = "hidden"; obj.style.position = "absolute"; obj.style.top = "0"; obj.style.left = "0"; container.appendChild(obj); var btnsvg = new Array(); var ul = document.createElement("ul"); ul.id="easyscrollnavvg"; for (var i=0;i<nav.length;i++){ var li = document.createElement("li"); li.innerHTML = nav[i]; li.id = navId[i]; btnsvg.push(li); ul.appendChild(li); }; parent.insertBefore(ul,container); btnsvg[0].onmouseover = function(){ obj.up = true; this.className = "overvg"; }; btnsvg[0].onmouseout = function(){ obj.up = false; this.className = ""; }; btnsvg[1].onmouseover = function(){ obj.down = true; this.className = "overvg"; }; btnsvg[1].onmouseout = function(){ obj.down = false; this.className = ""; }; btnsvg[0].onmousedown = btnsvg[1].onmousedown = function(){ obj.fast = true; }; btnsvg[0].onmouseup = btnsvg[1].onmouseup = function(){ obj.fast = false; }; btnsvg[2].onmouseover = function(){ this.className = "overvg"; }; btnsvg[2].onmouseout = function(){ this.className = ""; }; btnsvg[2].onclick = function(){ obj.style.top = "0px"; }; this.start = function(){ var newTop; var objHeight = obj.offsetHeight; var top = obj.offsetTop; var fast = (obj.fast) ? 2 : 1; if(obj.down){ newTop = ((objHeight+top) > height) ? top-(speed*fast) : top; obj.style.top = newTop + "px"; }; if(obj.up){ newTop = (top < 0) ? top+(speed*fast) : top; obj.style.top = newTop + "px"; }; }; obj.interval = setInterval("start()",50); }; // // script initiates on page load. // var addEvent = function(obj,type,fn){ if(obj.attachEvent){ obj['e'+type+fn] = fn; obj[type+fn] = function(){obj['e'+type+fn](window.event );} obj.attachEvent('on'+type, obj[type+fn]); } else { obj.addEventListener(type,fn,false); }; }; addEvent(window,"load",easyscrollvg); }()); прокрутка всё же в одном из модулей не рабоает. посмотреть модули можно тут |
Названия переменных менять не надо, классов тоже.
|
сделал два кода.
Первый (function() { var easyscroll = function(){ // id of the container element var id = "myContent"; // navigation buttons text var nav = ["Scroll Up", "Scroll Down", "Reset"]; // id for each navigation button (OPTIONAL) var navId = ["btnUp", "btnDown", "btnReset"]; // movement speed var speed = 5; // desired height of the container element (in pixels) var height = 314; // // END CONFIG // do not edit below this line (unless you want to of course :) ) // var obj = document.getElementById(id); obj.up = false; obj.down = false; obj.fast = false; var container = document.createElement("div"); var parent = obj.parentNode; container.id="easyscroll"; parent.insertBefore(container,obj); parent.removeChild(obj); container.style.position = "relative"; container.style.height = height + "px"; container.style.overflow = "hidden"; obj.style.position = "absolute"; obj.style.top = "0"; obj.style.left = "0"; container.appendChild(obj); var btns = new Array(); var ul = document.createElement("ul"); ul.id="easyscrollnav"; for (var i=0;i<nav.length;i++){ var li = document.createElement("li"); li.innerHTML = nav[i]; li.id = navId[i]; btns.push(li); ul.appendChild(li); }; parent.insertBefore(ul,container); btns[0].onmouseover = function(){ obj.up = true; this.className = "over"; }; btns[0].onmouseout = function(){ obj.up = false; this.className = ""; }; btns[1].onmouseover = function(){ obj.down = true; this.className = "over"; }; btns[1].onmouseout = function(){ obj.down = false; this.className = ""; }; btns[0].onmousedown = btns[1].onmousedown = function(){ obj.fast = true; }; btns[0].onmouseup = btns[1].onmouseup = function(){ obj.fast = false; }; btns[2].onmouseover = function(){ this.className = "over"; }; btns[2].onmouseout = function(){ this.className = ""; }; btns[2].onclick = function(){ obj.style.top = "0px"; }; this.start = function(){ var newTop; var objHeight = obj.offsetHeight; var top = obj.offsetTop; var fast = (obj.fast) ? 2 : 1; if(obj.down){ newTop = ((objHeight+top) > height) ? top-(speed*fast) : top; obj.style.top = newTop + "px"; }; if(obj.up){ newTop = (top < 0) ? top+(speed*fast) : top; obj.style.top = newTop + "px"; }; }; obj.interval = setInterval("start()",50); }; // // script initiates on page load. // var addEvent = function(obj,type,fn){ if(obj.attachEvent){ obj['e'+type+fn] = fn; obj[type+fn] = function(){obj['e'+type+fn](window.event );} obj.attachEvent('on'+type, obj[type+fn]); } else { obj.addEventListener(type,fn,false); }; }; addEvent(window,"load",easyscroll); }()); второй (function() { var easyscroll = function(){ // id контейнера элемента, который нужнзо проокрутить var id = "unique_id"; // navigation buttons text var nav = ["vgScroll Up", "vgScroll Down", "vgReset"]; // id for each navigation button (OPTIONAL) var navId = ["btnUpvg", "btnDownvg", "btnResetvg"]; // movement speed var speed = 5; // desired height of the container element (in pixels) var height = 314; // // END CONFIG // do not edit below this line (unless you want to of course :) ) // var obj = document.getElementById(id); obj.up = false; obj.down = false; obj.fast = false; var container = document.createElement("div"); var parent = obj.parentNode; container.id="easyscroll"; parent.insertBefore(container,obj); parent.removeChild(obj); container.style.position = "relative"; container.style.height = height + "px"; container.style.overflow = "hidden"; obj.style.position = "absolute"; obj.style.top = "0"; obj.style.left = "0"; container.appendChild(obj); var btns = new Array(); var ul = document.createElement("ul"); ul.id="easyscrollnav"; for (var i=0;i<nav.length;i++){ var li = document.createElement("li"); li.innerHTML = nav[i]; li.id = navId[i]; btns.push(li); ul.appendChild(li); }; parent.insertBefore(ul,container); btns[0].onmouseover = function(){ obj.up = true; this.className = "over"; }; btns[0].onmouseout = function(){ obj.up = false; this.className = ""; }; btns[1].onmouseover = function(){ obj.down = true; this.className = "over"; }; btns[1].onmouseout = function(){ obj.down = false; this.className = ""; }; btns[0].onmousedown = btns[1].onmousedown = function(){ obj.fast = true; }; btns[0].onmouseup = btns[1].onmouseup = function(){ obj.fast = false; }; btns[2].onmouseover = function(){ this.className = "over"; }; btns[2].onmouseout = function(){ this.className = ""; }; btns[2].onclick = function(){ obj.style.top = "0px"; }; this.start = function(){ var newTop; var objHeight = obj.offsetHeight; var top = obj.offsetTop; var fast = (obj.fast) ? 2 : 1; if(obj.down){ newTop = ((objHeight+top) > height) ? top-(speed*fast) : top; obj.style.top = newTop + "px"; }; if(obj.up){ newTop = (top < 0) ? top+(speed*fast) : top; obj.style.top = newTop + "px"; }; }; obj.interval = setInterval("start()",50); }; // // script initiates on page load. // var addEvent = function(obj,type,fn){ if(obj.attachEvent){ obj['e'+type+fn] = fn; obj[type+fn] = function(){obj['e'+type+fn](window.event );} obj.attachEvent('on'+type, obj[type+fn]); } else { obj.addEventListener(type,fn,false); }; }; addEvent(window,"load",easyscroll); }()); но, к сожалению, по-прежнему прокрутка работает только на одной галерее. |
var start = function(){ var newTop; var objHeight = obj.offsetHeight; var top = obj.offsetTop; var fast = (obj.fast) ? 2 : 1; if(obj.down){ newTop = ((objHeight+top) > height) ? top-(speed*fast) : top; obj.style.top = newTop + "px"; }; if(obj.up){ newTop = (top < 0) ? top+(speed*fast) : top; obj.style.top = newTop + "px"; }; }; obj.interval = setInterval(start, 50); |
Часовой пояс GMT +3, время: 01:43. |