我使用此函数收到代码Unable to get property 'style' of undefined or null reference
的错误。我正在设置数组中所有元素的样式。
对于记录,所有答案都没有解决此问题。如果你看一下代码,很明显最大的问题是花括号,一个是向后的,还有一个额外的。一个向后是一个大问题,为什么我得到错误和为什么警报工作,因为在读错误之前调用警报“。我认为。
我知道我错过了一些简单的东西,这就是我发布这个的原因。我在这里看到的大多数编程问题都是语法错误,当事情不起作用时,我的大多数问题都是。
一直工作低代表,所以请加上你的投票。谢谢。
function marc()
{
if(navigator.appVersion === "5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko")
{
var x=document.getElementsByClassName('nav_top'), i=x.length;
if(i===x.length)
{
// alert("works now); this works
x[i].style.margin = "0px -2.2px -1px -2.2px";//this line pulls the error
}
}
}
我尝试更改引号并删除引号,将错误更改为函数undefined。
答案 0 :(得分:0)
数组索引以0开头,设置i = x.length,如果x.length = 3,则i = 3。 x [3]超出范围。只有x [0],x [1],x [2]。
因此,如果要使用数组中的最后一个元素,请设置i = x.length - 1.或使用x [i-1]。如果(i === x.length)是多余的。
function marc()
{
if(navigator.appVersion === "5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko")
{
var x=document.getElementsByClassName('nav_top'), i=x.length;
if(x.length !== 0)
{
x[i-1].style.margin = "0px -2.2px -1px -2.2px";
}
}
}
答案 1 :(得分:0)
您使用的索引等于数组的大小,因此变量x[i]
将始终具有空值(因为数组的索引从0变为size-1)。如果要访问数组中的最后一个元素,则应使用x.length - 1
而不是x.length
您还应验证该数组是否包含至少一个元素。因此,清理代码将变为:
function marc() {
if (navigator.appVersion === "5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko") {
var x = document.getElementsByClassName('nav_top');
if (x.length > 0) {
x[x.length - 1].style.margin = "0px -2.2px -1px -2.2px";
}
}
}