为什么未定义typeof(text.value [len])但typeof(len)是数字?

时间:2019-12-22 16:39:58

标签: javascript html

为什么未定义typeof(text.value [len])但typeof(len)是数字

var text=document.getElementById('inputEmail');
var len=text.value.length;
document.getElementById('demo').innerHTML=typeof(text.value[len]);

1 个答案:

答案 0 :(得分:0)

那是因为数组位置从0开始。

[0, 1, 2, 3, ... ] 

在您的情况下,您要获取数组的长度(假设为10),并尝试将元素放置在位置10。但是,由于数组索引从0开始,因此数组中没有索引10。它从0到9。

您需要做的是获取长度-1。

var text=document.getElementById('inputEmail');
var len=text.value.length;
document.getElementById('demo').innerHTML=typeof(text.value[len - 1]);

应用此更正将使您的stringtypeof(text.value[len - 1])的值。这是因为dom元素(value)的getElementById属性将始终是字符串。字符串的一部分也是字符串。如果需要数字,可以使用parseInt函数将字符串解析为数字。

var text=document.getElementById('inputEmail');
var len=text.value.length;
document.getElementById('demo').innerHTML=typeof(parseInt(text.value[len - 1]));

PS 。在这里,即使您的value属性是一个字符串,我们也将数组作为示例。这是因为字符串只是char的数组,可以用value[index]

访问