上下键循环播放数组
我有一系列的颜色。 使用向上和向下箭头键,我想循环遍历数组并将当前数组值作为类添加到div。
var colors = [ "red", "green", "blue" ];
我想将当前值存储为变量,并使用jQuery .addClass将当前类附加到div。 作为一个jQuery新手,这里的任何帮助都会很棒!
1.使用Reminder %
循环索引计数器
var colors = ["red", "green", "blue"], i = 0, n = colors.length; $(document).keydown(function(e){ var k = e.which; if(k==38||k==40){ i = (k==38? ++i : --i) <0? n-1 : i%n; $('#test').attr('class', colors[i]); } });
2.在内部操作数组
另一种有趣( 不太复杂 )的方法,不使用当前的索引计数器
是通过简单地将最后一个键推到第一个位置(或反向,从头到尾)来操纵数组 ,并始终获得[0]索引键 :
http://jsbin.com/jojupo/3/edit
var colors = ["red", "green","blue"]; $(document).keydown(function(e){ var k = e.which; if(k==38||k==40){ if (k==38) colors.push(colors.shift()); else if (k==40) colors.unshift(colors.pop()); $('#test').attr('class', colors[0]); } });
这是注册按键的代码,这应该有助于您入门:
$(document).keydown(function(e){ if (e.keyCode == 37) { alert( "left pressed" ); return false; } }); $(document).keydown(function(e){ if (e.keyCode == 38) { alert( "up pressed" ); return false; } }); $(document).keydown(function(e){ if (e.keyCode == 39) { alert( "right pressed" ); return false; } }); $(document).keydown(function(e){ if (e.keyCode == 40) { alert( "down pressed" ); return false; } });
为了帮助你,假设你的标记是
,以下JavaScript将遍历颜色数组并设置颜色。
var $myDiv = $('#myDiv'); for (var i = 0; i < colors.length; i++) { $myDiv.attr('class', colors[i]); }
这与上面关于注册按键的答案相结合,应该可以帮助你完成大部分工作。 我建议使用jQuery的.attr()方法而不是jQuery的.addClass()方法,因为否则每次更改颜色时都需要删除所有以前的类。