2013-01-21 2 views
0

자바 스크립트 섹션 :배경 이미지가 변경되지 않는 이유는 무엇입니까?

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script> 
     $('document').ready(function(){ 
      setTimeout('slideback()', 1000); 
      function slideback() 
      { 
       $('body').css('background-image','url(http://sehirmedya.com/wp-content/uploads/2012/12/uluda%C4%9F.jpg)'); 
      } 
     }); 
</script> 

CSS 코드 :

body{ 
       background-image:url('taksi.jpg'); 
       background-size:100%; 
       background-attachment:fixed; 
       -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(
       src='taksi.jpg', 
       sizingMethod='scale')"; 
       filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(
       src='taksi.jpg', 
       sizingMethod='scale'); 
      } 

밀리 초 1,000 후에는 변경할 수 있지만하지 않는 것이다. 왜 안돼? 이 문제를 어떻게 해결할 수 있습니까?

+0

JS 콘솔에 오류가 있습니까? 실제로로드하고있는 이미지가 있습니까? –

답변

7

slideback은 DOM 준비 처리기 범위 내에 범위가 지정됩니다. 문자열을 setTimeout에 전달하면 전역 평가가 호출됩니다. 대신 기준으로 기능을 전달합니다

$('document').ready(function() { 
     setTimeout(slideback, 1000); 
     function slideback() { 
      $('body').css('background-image','url(http://sehirmedya.com/wp-content/uploads/2012/12/uluda%C4%9F.jpg)'); 
     } 
}); 
3

당신이 setTimeout() 리터럴 문자열로 'slideback()'를 사용하는 경우가 후 함수 정의가 더 이상 외부에서 액세스 포인트없는에서 $(document).ready() 기능을, 그 코드 를 실행합니다. 이름 대신 기능을 참조를 전달하여,

setTimeout(function() { 
    $('body').css('background-image','url(http://sehirmedya.com/wp-content/uploads/2012/12/uluda%C4%9F.jpg)'); 
}, 1000); 

을 또는 :

이 같은 익명 함수를 사용하여 다양한 범위의 문제를 방지 할 수

setTimeout(slideback, 1000); 

또한 움직일 수 .ready() 외부의 정의 :

function slideback() 
{ 
    $('body').css('background-image','url(http://sehirmedya.com/wp-content/uploads/2012/12/uluda%C4%9F.jpg)'); 
} 

$(function() { 
    setTimeout(slideback, 1000); 
}); 
2

익명의 기능은 제한 시간에 문자열을 통과 할 때 한 범위 지정 문제에 더 나은 인해 작동합니다

DEMO

$('document').ready(function(){ 
     setTimeout(function() { 
      $('body').css('background-image','url(http://sehirmedya.com/wp-content/uploads/2012/12/uluda%C4%9F.jpg)'); 
     },1000); 
    }); 
1

없음 문제를 단지 문제는 코드 작성에 있습니다.

<script type="text/javascript" src="js/jquery.js"></script> 

<script> 
    function slideback() 
    { 
     $('body').css('background-image','url(http://sehirmedya.com/wp-content/uploads/2012/12/uluda%C4%9F.jpg)'); 
    } 
    $('document').ready(function(){ 
     setTimeout(slideback, 1000); 
    }); 
</script> 

<body></body>
+0

이미 게시했습니다. – mplungjan

+0

내가 동시에 타이핑했기 때문에 나는 그것을 알지 못했다. .. 늦어서 유감스럽게 생각한다. .. 그러나 그 것이 더 중요하다. 당신이 제 시간에 좋은 도움을 얻었습니다 ... 고맙습니다. –

+0

그리고하지 마세요. setTimout에 문자열을 전달한다. – mplungjan

관련 문제