2012-06-29 1 views
0

누군가이 두 자바 스크립트가 같은 페이지에서 함께 작동하지 않는다고 말할 수 있습니까?두 자바 스크립트가 협동하지 않는 경우 틱 및 티커

스크립트 # 1

이 머리에 간다 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<script type="text/javascript"> 
//<![CDATA[ 
<!-- 
var tWidth='600px';     // width (in pixels) 
var tHeight='18px';     // height (in pixels) 
var moStop=true;      // pause on mouseover (true or false) 
var fontfamily = 'arial,sans-serif'; // font for content 
var tSpeed=7;      // scroll speed (1 = slow, 5 = fast) 

// enter your ticker content here (use \/ and \' in place of/and ' respectively) 
var content='<a href="http:\/\/www.url.com\/">7679 - Reset Passwords<\/a>, '; 


var cps=tSpeed; var aw, mq; var fsz = parseInt(tHeight) - 4; function startticker(){if (document.getElementById) {var tick = '<div style="position:relative;width:'+tWidth+';height:'+tHeight+';overflow:hidden;"'; if (moStop) tick += ' onmouseover="cps=0" onmouseout="cps=tSpeed"'; tick +='><div id="mq" style="position:absolute;left:0px;top:0px;font-family:'+fontfamily+';font-size:'+fsz+'px;white-space:nowrap;"><\/div><\/div>'; document.getElementById('ticker').innerHTML = tick; mq = document.getElementById("mq"); mq.style.left=(parseInt(tWidth)+10)+"px"; mq.innerHTML='<span id="tx">'+content+'<\/span>'; aw = document.getElementById("tx").offsetWidth; lefttime=setInterval("scrollticker()",50);}} function scrollticker(){mq.style.left = (parseInt(mq.style.left)>(-10 - aw)) ?parseInt(mq.style.left)-cps+"px" : parseInt(tWidth)+10+"px";} window.onload=startticker; 
//--> 
//]]> 
</script> 

이 스크립트 # 1 몸에 간다 :

<div id="ticker" align="center"> 
</div> 

위의 스크립트는 텍스트 RTOL을 윤곽 (오른쪽으로 왼쪽)을 선택합니다 (선택 윤곽). mouseover에서 선택 윤곽을 멈 춥니 다. 쉽고 간단한 스크립트,하지만 문제는

스크립트 # ... 내가 페이지에 다음 스크립트를 구현할 때 휴식은 2

이 머리에 간다 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<script type="text/javascript"> 
//<![CDATA[ 
<!-- 

function show2(){ 
if (!document.all&&!document.getElementById) 
return 
thelement=document.getElementById? document.getElementById("tick"): document.all.tick 
var Digital=new Date() 
var hours=Digital.getHours() 
var minutes=Digital.getMinutes() 
var seconds=Digital.getSeconds() 
var dn="PM" 
if (hours<12) 
dn="AM" 
if (hours>12) 
hours=hours-12 
if (hours==0) 
hours=12 
if (minutes<=9) 
minutes="0"+minutes 
if (seconds<=9) 
seconds="0"+seconds 
var ctime=hours+":"+minutes+":"+seconds+" "+dn 
thelement.innerHTML=""+ctime+"" 
setTimeout("show2()",1000) 
} 
window.onload=show2 
//--> 
//]]> 
</script> 

이가 간다 스크립트 # 2 몸 :

<span id="tick"></span> 

위의 스크립트는 단지 시계로 활동, 현재 시스템 시간을 표시는 시간, 분, 초를 계산합니다. 이 스크립트를 페이지에 추가하면 위의 스크립트 # 1 (선택 윤곽)이 페이지에서 사라집니다. 어떤 제안?

+0

자바 스크립트의 시작 부분에서 주석을 제거하지 않아도됩니까? – evotopid

+2

당신은'window.onload'를 이중 바인딩하는 것처럼 보입니다 (바인딩을 오버라이드하는 것). –

+1

주석 태그가 있으므로 XML로 파싱되지 않습니다. 그것들은 문제의 원인이 아닙니다. – abracassabra

답변

3

두 스크립트 모두 window.onload = something을 사용하므로 두 번째 스크립트가 첫 번째 스크립트를 초기화하지 못하게합니다. 다음은이를

window.onload = startticker; 

그리고 : 첫 번째에서

의 창로드를 제거하고 두 번째에 변경 : 당신은 당신의 첫 번째 스크립트에서이 라인을 가지고

function loadBothScripts() 
{ 
    startticker(); 
    show2(); 
} 

window.onload = loadBothScripts; 
+2

참고로, [작업 예제] (http://jsfiddle.net/mq9Wh/) (이니셜 라이저에서 두 가지 메소드를 모두 랩핑 한 다음 이니셜 라이저를 이벤트에 바인드). –

+0

@Diego Jancic 대단히 감사합니다! – abracassabra

+0

@ BradChristie 대단히 Brad에게 감사드립니다! – abracassabra

1

을 두 번째 스크립트 : 첫 번째 스크립트가 실행되지 않도록

window.onload = show2; 

두 번째 하나를 위해 window.onload 이벤트를 통해이-기록합니다. 이 함수를 사용하여 하나의 이벤트에 여러 핸들러를 첨부 할 수 있습니다 :

// addEventListener fix for IE 
// o: object to which event listener is assigned 
// e: event name as string 
// f: the function 
function myAddEventListener(o, e, f) { 
    if (o.addEventListener) { // standards compliant browsers 
     o.addEventListener(e, f, false); 
    } else if (o.attachEvent) { // IE8 and earlier 
     o.attachEvent("on" + e, f); 
    } 
} 

// replace all window.load = someFunction statements with this: 
myAddEventListener(window, "load", startticker); 
myAddEventListener(window, "load", show); 
+0

이 멋진 스크립트도 사용해 주셔서 감사합니다! 나는 이것이 유용 할 것이라고 확신한다. :) – abracassabra

+1

jQuery와 같은 JavaScript 라이브러리를 사용하여이 문제 등을 처리한다. –

관련 문제