2016-08-12 5 views
0

나는 이것이 (희망) 단순한 것이라고 생각한다. 내가 여기서 뭘하고 있는지 완전히 이해하지 못하므로 도움이 될 것입니다.jQuery - Divs 재 전달 함수 전달 함수

컨테이너 내에 4 개의 div가 있습니다. 함수 divOrder()을 실행하고 내 div를 표시 할 순서를 전달하려면 다음과 같이하십시오. divOrder(divfour, divTwo, divThree, divOne);이 작업이 수행되지 않으며 가장 좋은 방법은 무엇이 될지 잘 모르겠습니다.

HTML :

<div id="container"> 
    <div class="div-1">1</div> 
    <div class="div-2">2</div> 
    <div class="div-3">3</div> 
    <div class="div-4">4</div> 
</div> 

JS :

var divOrder, 
     url = document.location.href; 

divOrder = function (divOne, divTwo, divThree, divFour) { 
    var divOne = $('.div-1'), 
     divTwo = $('.div-2'), 
     divThree = $('.div-3'), 
     divFour = $('.div-4'); 

    $('#container').empty().append(divfour, divTwo, divThree, divOne); 

} 


if (url.indexOf('?test-1') > -1) { 
    divOrder(divfour, divTwo, divThree, divOne); 
} else if (url.indexOf('?test-2') > -1) { 
    divOrder(divThree, divTwo, divFour, divOne); 
} else if (url.indexOf('?test-3') > -1) { 
    divOrder(divOne, divTwo, divfour, divThree); 
} 

바이올린 : 당신의 도움에 대한https://jsfiddle.net/Lvmoyw2u/

감사합니다!

+0

을 당신은 당신이 당신의 divOrder 기능의 상단에 선언 변수와 같은 이름있는 매개 변수를 전달한다. 이 값을 설정하면 매번 전달할 매개 변수를 덮어 씁니다. – beauXjames

+0

그건 의미가 있습니다. 어떻게 내가 지나가고있는 변수를 상관시킬 수 있습니까? – Nick

답변

1

변수 선언을 함수 선언 위/아래로 이동하십시오.

또한 전역 변수와 혼동하지 않도록 함수의 매개 변수에 다른 이름을 사용하는 것이 좋습니다. 그들이 함수 안에 있었기 때문에

var divOrder = function(d1, d2, d3, d4) { 
 
    $('#container').empty().append(d1, d2, d3, d4); 
 
} 
 

 
var divOne = $('.div-1'), 
 
    divTwo = $('.div-2'), 
 
    divThree = $('.div-3'), 
 
    divFour = $('.div-4'); 
 

 

 
setInterval(function() { 
 
    divOrder(divOne, divTwo, divThree, divFour); 
 
    setTimeout(function() { 
 
    divOrder(divFour, divTwo, divThree, divOne); 
 
    setTimeout(function() { 
 
     // or without variables: 
 
     divOrder($('.div-3'), $('.div-1'), $('.div-4'), $('.div-2')); 
 
    }, 1000); 
 
    }, 1000); 
 
}, 3000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div id="container"> 
 
    <div class="div-1">1</div> 
 
    <div class="div-2">2</div> 
 
    <div class="div-3">3</div> 
 
    <div class="div-4">4</div> 
 
</div>
당신이 정적 인수에 div가 할당 된 함수 내부

1

, 그리고 변수는 개인했고, 당신이 당신의 if 문 내부를 액세스 할 수 없습니다 이유입니다 . 대신 이렇게 :

// global variables 
var divOrder, 
    url = document.location.href, 
    divOne = $('.div-1'), 
    divTwo = $('.div-2'), 
    divThree = $('.div-3'), 
    divFour = $('.div-4'); 

divOrder = function (div1, div2, div3, div4) {  
    $('#container').empty().append(div1, div2, div3, div4); 
}; 

// tested it directly 
divOrder(divThree, divTwo, divFour, divOne); 


if (url.indexOf('?test-1') > -1) { 
    divOrder(divFour, divTwo, divThree, divOne); 
} else if (url.indexOf('?test-2') > -1) { 
    divOrder(divThree, divTwo, divFour, divOne); 
} else if (url.indexOf('?test-3') > -1) { 
    divOrder(divOne, divTwo, divFour, divThree); 
} 

JSFiddle