2012-12-20 4 views
1

가능한 모든 웹 사이트를 검색했으며, 전문 디자이너 또는 코더가 아닌 사이트 개발자에게 연락했습니다. 두 개의 스크립트가 내 홈페이지에서 실행 중이며 그녀에 따르면 두 개가있을 때마다 "NewsRotator"스크립트가 취소되고 제대로 작동하지 않습니다. 내가 읽은 모든 것에서 그것은 window.onload 명령으로 문제가 될 수있는 것처럼 들리지만, 나는 여전히이 자바 스크립트에 대해 매우 새로운 것입니다.두 개의 JavaScript가 서로 충돌합니다.

여기에 프로그래밍을 게시하고 누구든지 도와 주시면 큰 도움이됩니다. 첫째, 뉴스 회전 장치 오작동 사람 :

<div id="NewsBox"> 
<div id="NewsContainer"> 
    <div id="NewsRotator"> 
    <div> 
    <img src="images/loading.gif" border="0" alt="Loading..."><br>Loading... 
}  
</div> 
    </div> 
<div style="clear:both;height:1px;overflow:hidden"></div> 
</div> 
<div id="NewsPreview"></div> 
<div id="NewsItems" style="display:none"> 
[!Ditto? &startID=`[[CurrentPress]]` &summarize=`4` &tpl=`NewsRotatorArticle`  &sortBy=`pub_date` &sortDir=`DESC`!] 
</div> 
</div> 
<script language="javascript"> 
// Change the value below to modify the delay between news items. 
var delaySeconds = 8; 
var currentItem = 0; 
var timer = null; 
var newsItems; 
var articles = new Array(); 

window.onload=initializeItems; 

// Intialize Variables 
function initializeItems() { 
init(); 

newsItems = document.getElementById('NewsItems'); 
var divs = newsItems.getElementsByTagName('DIV'); 
for (var i=0;i<divs.length;i++) { 
    if (divs[i].getAttribute("type") == 'article') 
     articles[articles.length] = divs[i]; 
} 
displayItem(); 
} 

// Display item 
function displayItem() { 
if (currentItem > articles.length - 1) currentItem = 0; 
if (articles[currentItem]) { 
var url = articles[currentItem].getAttribute("url"); 
var html = articles[currentItem].innerHTML; 


document.getElementById("NewsRotator").innerHTML = html; 
var newslink = document.getElementById("NewsLink"); 
var links = newslink.getElementsByTagName("A"); 
links[0].href = url; 
newslink.style.display = "block"; 

currentItem++; 
updatePreview(); 
timer = window.setTimeout("displayItem()",delaySeconds*1000); 
} 
} 

function updatePreview() { 
    var imgs = new Array(); 
    var html = ""; 

    // Get main image from each article; 
for (var i=0; i<articles.length; i++) { 
    var tmp = articles[i].getElementsByTagName("IMG"); 
    if (tmp && tmp.length > 0) 
     imgs[imgs.length] = tmp[0].src; 
    else 
     imgs[imgs.length] = null; 
} 

var end = (currentItem > articles.length-1) ? articles.length-1 : currentItem; 
var begin = end-3; 
if (begin < 0) { 
    begin = 0; 
    end = (articles.length >= 4) ? 3 : articles.length-1; 
} 

for (var j=begin; j<=end; j++) { 
    //alert('begin: ' + begin + "\n end:" + end); 
    if (imgs[j] != null) { 
     if(j+1 == currentItem) { 
      html += '<li><a href="#" onclick="currentItem=' + j + ';window.clearTimeout(timer);displayItem();return false;" class="current">'; 
      html += '<img src="/images/news/prev'+(j+1)+'-over.gif" alt="'+(j+1)+'" border="0"></a></li>' + "\n";+'</a></li>' + "\n"; 
     } 
     else { 
      html += '<li><a href="#" onclick="currentItem=' + j + ';window.clearTimeout(timer);displayItem();return false;">'; 
      html += '<img src="/images/news/prev'+(j+1)+'.gif" alt="'+(j+1)+'" border="0"></a></li>' + "\n";+'</a></li>' + "\n"; 
     } 
    } 
} 

if (html != "") { 
    html = '<ul>' + html + '</ul><div style="clear:both"></div>'; 
    document.getElementById('NewsPreview').innerHTML = html; 
} 
} 
</script> 

이이 페이지에 때 그것을 아름답게 작동, 2,하지만 내 뉴스 회전을 종료합니다.

//Specify the slider's width (in pixels) 
var sliderwidth="300px" 
//Specify the slider's height 
var sliderheight="150px" 
//Specify the slider's slide speed (larger is faster 1-10) 
var slidespeed=3 
//configure background color: 
slidebgcolor="#EAEAEA" 

//Specify the slider's images 
var leftrightslide=new Array() 
var finalslide='' 
//Specify the slider's width (in pixels) 
var sliderwidth="940px" 
//Specify the slider's height 
var sliderheight="125px" 
//Specify the slider's slide speed (larger is faster 1-10) 
var slidespeed=2 
//configure background color: 
slidebgcolor="#ffffff" 

//Specify the slider's images 
var leftrightslide=new Array() 
var finalslide='' 
leftrightslide[0]='<a href="http://deals.sheraton.com/promos/NAD-massachusetts-Springfield-falcons-hockey"><img src="assets/images/new web graphics/Corporate Logos/sheraton.png" border=1></a>' 
leftrightslide[1]='<a href="http://www.libboslaw.com"><img src="assets/images/new web graphics/Corporate Logos//libboslaw.png" border=1></a>' 
leftrightslide[2]='<a href="http://www.amicaconnections.com"><img src="assets/images/new web graphics/Corporate Logos/amica.png" border=1></a>' 
leftrightslide[3]='<a href="http://www.artiolidodge.com"><img src="assets/images/new web graphics/Corporate Logos/artiolidodge.png" border=1></a>' 
leftrightslide[4]='<a href="http://www.bigy.com"><img src="assets/images/new web graphics/Corporate Logos/bigy.png" border=1></a>' 
leftrightslide[5]='<a href="http://www.bltees.com"><img src="assets/images/new web graphics/Corporate Logos/bltees.png" border=1></a>' 
leftrightslide[6]='<a href="http://www.completepayrollsolutions.com"><img src="assets/images/new web graphics/Corporate Logos/cps.png" border=1></a>' 
leftrightslide[7]='<a href="http://www.baliseauto.com"><img src="assets/images/new web graphics/Corporate Logos/balise.png" border=1></a>' 
leftrightslide[8]='<a href="http://www.facebook.com/70054351104/posts/10151037727871105"><img src="assets/images/new web graphics/Corporate Logos/garyrome.png" border=1></a>' 
leftrightslide[9]='<a href="http://www.mylimo5.com"><img src="assets/images/new web graphics/Corporate Logos/exclusivelimo.png" border=1></a>' 
leftrightslide[10]='<a href="http://www.businesswest.com"><img src="assets/images/new web graphics/Corporate Logos/businesswest.png" border=1></a>' 
leftrightslide[11]='<a href="http://www.springfieldmagnet.com/website"><img src="assets/images/new web graphics/Corporate Logos/magnetschools.png" border=1></a>' 
leftrightslide[12]='<a href="http://www.mymamamiaspizza.com"><img src="assets/images/new web graphics/Corporate Logos/mama mias.png" border=1></a>' 
leftrightslide[13]='<a href="http://www.maplegaterehab.com"><img src="assets/images/new web graphics/Corporate Logos/maplegate.png" border=1></a>' 
leftrightslide[14]='<a href="http://www.massmutual.com"><img src="assets/images/new web graphics/Corporate Logos/massmutual.png" border=1></a>' 
leftrightslide[15]='<a href="http://www.mricenter.com/locations/Massachusetts_Springfield.htm"><img src="assets/images/new web graphics/Corporate Logos/mricenter.png" border=1></a>' 
leftrightslide[16]='<a href="http://www.hampdenbank.com"><img src="assets/images/new web graphics/Corporate Logos/hampdenbank.png" border=1></a>' 
leftrightslide[17]='<a href="http://www.springfielddowntown.com"><img src="assets/images/new web graphics/Corporate Logos/sbid.png" border=1></a>' 
leftrightslide[18]='<a href="http://www.jtssportspub.com"><img src="assets/images/new web graphics/Corporate Logos/jts.png" border=1></a>' 
leftrightslide[19]='<a href="http://www.wne.edu"><img src="assets/images/new web graphics/Corporate Logos/wne.png" border=1></a>' 
leftrightslide[20]='<a href="http://www.reminderpublications.com"><img src="assets/images/new web graphics/Corporate Logos/reminder.png" border=1></a>' 
leftrightslide[21]='<a href="http://www.theobbq.com"><img src="assets/images/new web graphics/Corporate Logos/theodores.png" border=1></a>' 
leftrightslide[22]='<a href="http://forms.prideaccounts.com/gas.html"><img src="assets/images/new web graphics/Corporate Logos/pride.png" border=1></a>' 
leftrightslide[23]='<a href="http://www.reliabletemps.com"><img src="assets/images/new web graphics/Corporate Logos/reliabletemps.png" border=1></a>' 

//Specify gap between each image (use HTML): 
var imagegap="<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>" 

//Specify pixels gap between each slideshow rotation (use integer): 
var slideshowgap=25 


//Specify gap between each image (use HTML): 
var imagegap=" " 

//Specify pixels gap between each slideshow rotation (use integer): 
var slideshowgap=5 


////NO NEED TO EDIT BELOW THIS LINE//////////// 

var copyspeed=slidespeed 
leftrightslide='<nobr>'+leftrightslide.join(imagegap)+'</nobr>' 
var iedom=document.all||document.getElementById 
if (iedom) 
document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100px;left:-9000px">'+leftrightslide+'</span>') 
var actualwidth='' 
var cross_slide, ns_slide 

function fillup(){ 
if (iedom){ 
cross_slide=document.getElementById? document.getElementById("test2") : document.all.test2 
cross_slide2=document.getElementById? document.getElementById("test3") : document.all.test3 
cross_slide.innerHTML=cross_slide2.innerHTML=leftrightslide 
actualwidth=document.all? cross_slide.offsetWidth : document.getElementById("temp").offsetWidth 
cross_slide2.style.left=actualwidth+slideshowgap+"px" 
} 
else if (document.layers){ 
ns_slide=document.ns_slidemenu.document.ns_slidemenu2 
ns_slide2=document.ns_slidemenu.document.ns_slidemenu3 
ns_slide.document.write(leftrightslide) 
ns_slide.document.close() 
actualwidth=ns_slide.document.width 
ns_slide2.left=actualwidth+slideshowgap 
ns_slide2.document.write(leftrightslide) 
ns_slide2.document.close() 
} 
lefttime=setInterval("slideleft()",30) 
} 
window.onload=delay 

function slideleft(){ 
if (iedom){ 
if (parseInt(cross_slide.style.left)>(actualwidth*(-1)+8)) 
cross_slide.style.left=parseInt(cross_slide.style.left)-copyspeed+"px" 
else 
cross_slide.style.left=parseInt(cross_slide2.style.left)+actualwidth+slideshowgap+"px" 

if (parseInt(cross_slide2.style.left)>(actualwidth*(-1)+8)) 
cross_slide2.style.left=parseInt(cross_slide2.style.left)-copyspeed+"px" 
else 
cross_slide2.style.left=parseInt(cross_slide.style.left)+actualwidth+slideshowgap+"px" 

} 
else if (document.layers){ 
if (ns_slide.left>(actualwidth*(-1)+8)) 
ns_slide.left-=copyspeed 
else 
ns_slide.left=ns_slide2.left+actualwidth+slideshowgap 

if (ns_slide2.left>(actualwidth*(-1)+8)) 
ns_slide2.left-=copyspeed 
else 
ns_slide2.left=ns_slide.left+actualwidth+slideshowgap 
} 
} 


if (iedom||document.layers){ 
with (document){ 
document.write('<table border="0" cellspacing="0" cellpadding="0"><td>') 
if (iedom){ 
write('<div style="position:relative;width:'+sliderwidth+';height:'+sliderheight+';overflow:hidden">') 
write('<div style="position:absolute;width:'+sliderwidth+';height:'+sliderheight+';background-color:'+slidebgcolor+'" onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed">') 
write('<div id="test2" style="position:absolute;left:0px;top:0px"></div>') 
write('<div id="test3" style="position:absolute;left:-1000px;top:0px"></div>') 
write('</div></div>') 
} 
else if (document.layers){ 
write('<ilayer width='+sliderwidth+' height='+sliderheight+' name="ns_slidemenu" bgColor='+slidebgcolor+'>') 
write('<layer name="ns_slidemenu2" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>') 
write('<layer name="ns_slidemenu3" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>') 
write('</ilayer>') 
} 
document.write('</td></table>') 
} 
} 
+1

자바 스크립트에서 얻은 오류를 나열 할 수 있습니까? (콘솔을 여는 방법은 [이 링크] (http://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console-in-different-browsers)를 참조하십시오. – blo0p3r

+0

외부 자바 스크립트 파일과 함수 범위를 조사하여 시작합니다. 코드를 간섭하는 모든 글로벌 변수를 생성하지 않도록하십시오. – Evan

답변

1

이 당신의 대답하지, 그래서 그것을 허용 할 것을 기대하지 않지만,이 코드 블록은 확실히 도움이되지 않습니다와 충돌하는 스크립트를 가능하게하고있는 것을 나타냅니다. 전역 범위 (또는 그 문제에 대한 공유 범위)에서 변수가 다시 선언 될 때마다 이전 선언이 무시됩니다. 다음은 두 개의 변수를 초기 선언 아래에 몇 줄을 덮어 쓸 가능성 복사/붙여 넣기 실수 :

//Specify gap between each image (use HTML): 
var imagegap="<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>" 

//Specify pixels gap between each slideshow rotation (use integer): 
var slideshowgap=25 


//Specify gap between each image (use HTML): 
var imagegap=" " 

//Specify pixels gap between each slideshow rotation (use integer): 
var slideshowgap=5 

자바 스크립트 범위가 너무 갈등을 제한하는 하나의 방법은 자기 동봉에서 스크립트를 래핑하는 것입니다 제어 기능을 사용하여 익명 함수는 다음과 같습니다.

(function() { 
    // your 1st script code here 
    var foo = 'foo'; 
}()); 

(function() { 
    // your 2nd script code here 
    var foo = 'bar'; // will not overwrite the 1st script's foo because of the controlled scope 
}()); 

전역 범위를 깨끗하게 유지하고 싶습니다. 전체 범위는 단순히 DOM 객체가 window 일 때 전역 객체에 할당 된 속성을 나타냅니다. 그래서이 : 특정 시점에서 window.foo의 하나 개의 값이있을 수 있기 때문에

<script type="text/javascript"> 
    window.foo = 'foo'; 
</script> 

... 그리고, 쉽게 될 수 있습니다

<script type="text/javascript"> 
    var foo = 'foo'; 
</script> 

...

이 동일하다 실수로 덮어 쓴.

관련 문제