0
var odd = [1, 3, 5, 7, 9];

function testFunction() {
    numbers = document.getElementById("inputfield").value;

    alert(odd.indexOf(numbers[0]));
}

It alerts "-1" for some reason, even if I split "number" first to turn it into an array.

I even tried index=number[0]; and then alert(odd.indexOf(index)); but it's still not working

Here is a demo http://jsfiddle.net/y0ruba/NUzAD/

4

4 回答 4

3

那是因为number[0]undefined

var number = 1;
var array = [ "a", "b" ]
number[0]; // undefined
array.indexOf(undefined); // -1

如果将alert行更改为:

alert(odd.indexOf(parseInt(("" + numbers)[0], 10)));

它应该工作。首先numbers转换为字符串,然后获取第0th 位,然后将其转换回数字。在 JSFiddle 这给了我4

于 2013-09-25T15:42:31.863 回答
2

number[0]是一个string。您必须在使用前进行投射,indexOf以便它可以匹配数字。

var odd = [1, 3, 5, 7, 9];
alert(odd.indexOf(+numbers[0]));

工作演示

于 2013-09-25T15:42:36.017 回答
2

利用parseInt

numbers[0]将返回一个字符串值。因为odd是数字数组,所以它找不到它的索引。因此,numbers[0]使用转换为整数parseInt

jsFiddle 演示

numbers = document.getElementById("inputfield").value;
var x = parseInt(numbers[0]);
alert(odd.indexOf(x));
于 2013-09-25T15:45:35.100 回答
0

数字没有索引。你能做的最好的就是parseInt((99936).toString()[0]),这将是9你的情况。

于 2013-09-25T15:43:35.050 回答