2013-09-23 4 views
0

마우스를 끈 후에는 시세가 매우 빠른 속도로 움직입니다. 오류가 무엇인지 모릅니다.나는 뉴스 티커를 만들려고했다. 마우스를 가져 가면 마우스가 떠날 때 오류가 발생합니다.

자바 스크립트 : 당신은 데모 여기서 일하는 확인할 수 있습니다

$('#tick2').html($('#tick').html()); 
var temp=0,intervalId=0; 
$('#tick li').each(function() { 
    var offset=$(this).offset(); 
    var offsetLeft=offset.left; 
    $(this).css({'left':offsetLeft+temp}); 
    temp=$(this).width()+temp+10; 
}); 
$('#tick').css({'width':temp+40, 'margin-left':'20px'}); 
temp=0; 
$('#tick2 li').each(function(){ 
    var offset=$(this).offset(); 
    var offsetLeft=offset.left; 
    $(this).css({'left':offsetLeft+temp}); 
    temp=$(this).width()+temp+10; 
}); 
$('#tick2').css({'width':temp+40,'margin-left':temp+40}); 

function abc(a,b) { 
    $('#outer').mouseenter(function() { window.clearInterval(intervalId);intervalId=0; }); 
    $('#outer').mouseleave(function() { start(); }) 
    var marginLefta=(parseInt($("#"+a).css('marginLeft'))); 
    var marginLeftb=(parseInt($("#"+b).css('marginLeft'))); 
    if((-marginLefta<=$("#"+a).width())&&(-marginLefta<=$("#"+a).width())){ 
     $("#"+a).css({'margin-left':(marginLefta-1)+'px'}); 
    } else { 
     $("#"+a).css({'margin-left':temp}); 
    } 
    if((-marginLeftb<=$("#"+b).width())){ 
     $("#"+b).css({'margin-left':(marginLeftb-1)+'px'}); 
    } else { 
     $("#"+b).css({'margin-left':temp}); 
    } 
} 

function start() { intervalId = window.setInterval(function() { abc('tick','tick2'); }, 10) } 

start(); 

: http://jsfiddle.net/mstoic/juJK2/

답변

0

글쎄, 당신은 거의 브라우저를 폭발! 대신이 시도 할 수 :

function abc(a,b) { 

var marginLefta=(parseInt($("#"+a).css('marginLeft'))); 
var marginLeftb=(parseInt($("#"+b).css('marginLeft'))); 
if((-marginLefta<=$("#"+a).width())&&(-marginLefta<=$("#"+a).width())){ 
    $("#"+a).css({'margin-left':(marginLefta-1)+'px'}); 
} else { 
    $("#"+a).css({'margin-left':temp}); 
} 
if((-marginLeftb<=$("#"+b).width())){ 
    $("#"+b).css({'margin-left':(marginLeftb-1)+'px'}); 
} else { 
    $("#"+b).css({'margin-left':temp}); 
} 
} 

function start() { intervalId = window.setInterval(function() { abc('tick','tick2'); }, 10) } 

$(function(){ 
     $('#outer').mouseenter(function() { window.clearInterval(intervalId); }); 
     $('#outer').mouseleave(function() { start(); }) 
     start(); 
}); 

근무 바이올린 : http://jsfiddle.net/juJK2/1/

당신은 한 번만 당신이 abc()을 입력 할 때마다 이벤트 핸들러를하지 결합한다

+0

아주 좋습니다. 고마워. 추가 사항이나 개선 사항을 제안 해 줄 수 있습니까? 또는 내 웹 사이트에서이 벌금을 사용합니까? – mstoic