数组函数索引

时间:2014-01-06 23:08:56

标签: javascript

我正在尝试创建一个类似于书籍内容页面的数组。这是我正在尝试的:

var section = [someFunction(pInput.value), anotherFunction(pInput.value), function3(pInput.value)];
var sectionNum = 0;

var playerInput = function () {
    var pInput = document.getElementById('input');
    section[sectionNum];
};

编辑: 我的函数不会执行,所以当我运行代码时没有任何反应。

总而言之,我想知道我编码是错还是有其他方法可以做到。

感谢您的帮助, 〜网关

3 个答案:

答案 0 :(得分:3)

您应该按照以下几行重新构建代码:

var section = [someFunction, anotherFunction, function3];

var sectionNum = 0;

var playerInput = function () {
    var pInput = document.getElementById('input');
    section[sectionNum](pInput.value);
};

但请确保sectionNum始终具有合法价值的一些不错的支票。

答案 1 :(得分:1)

section数组存储每个函数返回的值而不是函数本身。

你可能想做这样的事情:

var section = [someFunction, anotherFunction, function3];
var sectionNum = 0;

var playerInput = function () {
    var pInput = document.getElementById('input');
    section[sectionNum](pInput.value);
};

答案 2 :(得分:1)

而不是将您的函数放在数组中并尝试根据sectionNum从那里调用它们。你可以使用switch语句;在我看来,它更容易阅读:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch

在你的情况下,它会是这样的:

switch (sectionNum) {
  case 0:
    someFunction(pInput.value)
    break;
  case 1:
    anotherFunction(pInput.value)
    break;
  case 2:
    function3(pInput.value)
    break;
  default:
    alert("I don't know that number")
    break;
}

唯一的缺点是你不能像在阵列上那样随时添加更多功能。