Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 发现';键';在基于';多值';_Javascript_Jquery_Html - Fatal编程技术网

Javascript 发现';键';在基于';多值';

Javascript 发现';键';在基于';多值';,javascript,jquery,html,Javascript,Jquery,Html,以下面的简化JS对象(JS Fiddle:)为例——我想是模拟多维关联数组 var ControlMap = { tb_RosMon: { row: 1, col: 1 }, tb_RosTue: { row: 1, col: 2 }, tb_RosWed: { row: 1, col: 3 }, tb_RosThu: { row: 1, col: 4 }, tb_RosFri: { row: 1, col: 5 }, tb_RosSat: { r

以下面的简化JS对象(JS Fiddle:)为例——我想是模拟多维关联数组

var ControlMap = {
    tb_RosMon: { row: 1, col: 1 },
    tb_RosTue: { row: 1, col: 2 },
    tb_RosWed: { row: 1, col: 3 },
    tb_RosThu: { row: 1, col: 4 },
    tb_RosFri: { row: 1, col: 5 },
    tb_RosSat: { row: 1, col: 6 },
    tb_RosSun: { row: 1, col: 7 },

    tb_AbsMon: { row: 2, col: 1 },
    tb_AbsTue: { row: 2, col: 2 },
    tb_AbsWed: { row: 2, col: 3 },
    tb_AbsThu: { row: 2, col: 4 },
    tb_AbsFri: { row: 2, col: 5 },
    tb_AbsSat: { row: 2, col: 6 },
    tb_AbsSun: { row: 2, col: 7 },

    ddl_ReasonMon: { row: 3, col: 1 },
    ddl_ReasonTue: { row: 3, col: 2 },
    ddl_ReasonWed: { row: 3, col: 3 },
    ddl_ReasonThu: { row: 3, col: 4 },
    ddl_ReasonFri: { row: 3, col: 5 },
    ddl_ReasonSat: { row: 3, col: 6 },
    ddl_ReasonSun: { row: 3, col: 7 },

    tb_AddMon: { row: 4, col: 1 },
    tb_AddTue: { row: 4, col: 2 },
    tb_AddWed: { row: 4, col: 3 },
    tb_AddThu: { row: 4, col: 4 },
    tb_AddFri: { row: 4, col: 5 },
    tb_AddSat: { row: 4, col: 6 },
    tb_AddSun: { row: 4, col: 7 },

    Mon_AddReason: { row: 5, col: 1 },
    Tue_AddReason: { row: 5, col: 2 },
    Wed_AddReason: { row: 5, col: 3 },
    Thu_AddReason: { row: 5, col: 4 },
    Fri_AddReason: { row: 5, col: 5 },
    Sat_AddReason: { row: 5, col: 6 },
    Sun_AddReason: { row: 5, col: 7 }
}
这基本上是输入id(
tb_RosMon
tb_AbsMon
等)及其在HTML
中的行和列的映射。我正在尝试向相关输入添加键导航(上、下、左和右)

i、 e.如果用户在打开
tb_Absue
时按下向下箭头,我将获取
tb_Absue
的位置,如下所示:

var row = ControlMap[SourceID]["row"]; //Returns 2
var col = ControlMap[SourceID]["col"]; //Returns 2
然后我将按1递增行(当他们按下时),以给出第3行第2列的目的地。然后我需要搜索上面的对象,查看第3行第2列是否存在输入(tb#####)并返回其ID


一个人怎么能这样做?普通的JS或JQuery就可以了。

对象。键
一些键可以:

var id;
Object.keys(ControlMap).some(function(key) {
    var entry = ControlMap[key];
    if (entry.row == desiredRow && entry.col == desiredCol) {
        id = key;
        return true; // Stops the loop
    }
    return false;
});
这些都是ES5的特性,但对于IE8和其他较旧的浏览器来说,它们都是可多填充的。或者,您也可以在中使用

var id;
var key;
var entry;
for (key in ControlMap) {
    entry = ControlMap[key];
    if (entry.row == desiredRow && entry.col == desiredCol) {
        id = key;
        break;
    }
}

我会认真地建议重新考虑这个数据结构,但如果你被它卡住了,那么很遗憾,我需要支持IE7+,所以我需要按照你的建议去做。谢谢。@HeavenCore:
对象。键
数组#一些
都可以为IE7多填充。但是,
for in
works.:-)