2014-10-31 8 views
0

섹션 배열이 있습니다. 위쪽 및 아래쪽 화살표 키를 사용하여 현재 값과 다음 값을 얻고 싶습니다. 그리고 아래와 같이 반복하지 마십시오.jQuery - 배열에서 값을 가져 오는 위아래 키

var sections = [ "A", "B","C","D"]; 

$(document).keydown(function(e){ 

    var k= e.which; 

    if(k==40){ sections.push(sections.shift()); } 

    else if(k==38){ sections.unshift(sections.pop()); } 

    $('body').html('You just went to ' + sections[0]); // current section. 
    // How to return the previous section that I was in? 
    // For example: You just left section A then went to section B 
    // Do not loop, return: You just reached end/beginning 
}); 

근무 바이올린 : http://jsfiddle.net/9977ov2x/

+0

코드가 작동하고 검토가 필요하다고 생각하십니까? 그렇다면 http://codereview.stackexchange.com/ – undefined

+0

에 게시하십시오. @Vohuman 아니요, 두 번째 및 세 번째 //를 확인하십시오 // –

답변

1

이 몸에

var sections = ["A", "B", "C", "D"]; 
var i = 0; 
var $pre = $('p'); 
var $now = $('span'); 
var $next = $('div'); 
$(document).keydown(function (e) { 

    var k = e.which; 
    var pretmp = sections[i] ; 
    //Next is same to it you put the variables to the if block below and then echo 2 line in some html tag " if press up will be " and " else will be " so you will have 2 next tmp var i assume it next1 and next2 
    if (k == 40) { 
     i++; 
     // next1 
    } else if (k == 38) { 

     i--; 
     //next2 
    } 

    if (i >= sections.length) { 
     i = 0; 
    } else if (i < 0) { 
     i = sections.length - 1; 
    } 
    $pre.html('Previous is ' + pretmp); 
    $now.html('You just went to ' + sections[i]); // return the current section. 
    // How to return the previous section? 
    // For example: You just left section A then went to section B 
    // Also stop if I'm at the end or begaing then return: You just rech end/beginig 
}); 

및 HTML을 시도해

<p></p><span></span><br/><div></div> 
,
2
var sections = [ "A", "B","C","D"]; 
var i=0; 
$(document).keydown(function(e){ 

    var k= e.which; 

    if(k==40){ i++; } 

    else if(k==38){ i--; } 

    if(i>=sections.length){ 
    i=0; 
    } 
    else if(i<0) 
    { 
    i=sections.length-1; 
    } 

    $('body').html('You just went to ' + sections[i]); // return the current section. 
    // How to return the previous section? 
    // For example: You just left section A then went to section B 
    // Also stop if I'm at the end or begaing then return: You just rech end/beginig 
}); 

http://jsfiddle.net/9977ov2x/2/

+0

글쎄, 똑같습니다. 현재 섹션과 다음 섹션을 반환해야합니다. 나를 잡을 수있는 코멘트를 확인하십시오. –

+0

심각하게? 당신이 원하는 블록을하면 .. 끝이나 처음에 도달했다는 것을 의미하지 않는다. – Baz1nga

+0

내가 그 부분을 어떻게 생각하니? section [i]가 새로운 값을 리턴 할 것이고, 이전에 반환 된 이전 값을 반환 할 필요가있다. –