如何创建一个导航数组的函数?

时间:2016-03-09 21:17:14

标签: javascript jquery html arrays

所以我有一个数组:

var summaryList;
summaryList = ['a','b','c', 'd']

数组中的每个项目代表我想要抓住焦点的元素。我想通过使用导航数组中每个项目的左/右箭头按键来完成此操作。调用焦点后,我想将边框设置为黄色以显示它是活动的:

$(document).keydown(function(e){
        if (e.keyCode == 37) {
            console.log('left')        
        }
        if (e.keyCode == 39) {
            var pos;
            pos = this.summaryList[];

            console.log('right');
            console.log(pos);
            $(pos[0 +1]).focus().css('border', "yellow");
        } 
});

我的问题是当我希望它读取summaryList数组中的当前项时,console.log(pos)以未定义的形式返回。每次按键后,数组项应移动一个索引位置

2 个答案:

答案 0 :(得分:2)

var summaryList = ['a', 'b', 'c', 'd'];

// Hold reference to the currently focussed position
var currentPosition = 0;

// Maximum position we can navigate to is the last item in the summary list
var maxFocusablePosition = summaryList.length - 1;

// Utility function to focus a given position value
function focusPosition(position) {
    $(summaryList[position]).focus().css('border', 'yellow');
}

// Focus the first one by default
focusPosition(currentPosition);

$(document).keydown(function (event) {
    if (event.keyCode === 37) {
        currentPosition > 0 ? currentPosition-- : 0;
    }

    if (event.keyCode === 39) {
        currentPosition < maxFocusablePosition ? currentPosition++ : maxFocusablePosition;
    }

    focusPosition(currentPosition);
});

答案 1 :(得分:0)

OracleDbType.Byte

应该只是

pos = this.summaryList;

pos = summaryList;指的是该文件。 summaryList在窗口中定义。

或者您可以执行this,但很少需要添加&#34;窗口。&#34;从全局范围调用项目时。

<小时/>

你遇到的另一个问题是......

window.summaryList

$(pos[0 +1]).focus().css('border', "yellow");将成为您数组中的项目,例如&#34; c&#34;。

pos[0 +1]不是有效的选择器,因此只会混淆jQuery。