Javascript 更改类样式时出错
我收到代码错误Javascript 更改类样式时出错,javascript,class,styling,Javascript,Class,Styling,我收到代码错误无法使用此函数获取未定义或空引用的属性“style”。我正在设置数组中所有元素的样式 为了记录在案,这里的所有答案都没有解决这个问题。如果你看代码,很明显最大的问题是花括号,一个是向后的,还有一个是额外的。一个向后的是一个大问题,为什么我会出错,为什么警报工作,因为警报是在读取错误之前调用的。”我想 我知道我遗漏了一些简单的东西,这也是我发布这篇文章的原因。我在这里看到的大多数编程问题都是语法错误,当事情不起作用时,这也是我的主要问题 一直以来都是低代表,所以请添加您的投票。谢谢
无法使用此函数获取未定义或空引用的属性“style”。我正在设置数组中所有元素的样式
为了记录在案,这里的所有答案都没有解决这个问题。如果你看代码,很明显最大的问题是花括号,一个是向后的,还有一个是额外的。一个向后的是一个大问题,为什么我会出错,为什么警报工作,因为警报是在读取错误之前调用的。”我想
我知道我遗漏了一些简单的东西,这也是我发布这篇文章的原因。我在这里看到的大多数编程问题都是语法错误,当事情不起作用时,这也是我的主要问题
一直以来都是低代表,所以请添加您的投票。谢谢
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
}
}
}
我已尝试更改引号并删除引号,从而将错误更改为未定义的函数。数组索引以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";
}
}
}
您使用的索引等于数组的大小,因此变量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";
}
}
}
您认为此导航器字符串将匹配多少用户?不要使用用户代理检测!i=x.length;if(i==x.length)
-嗯???不,阅读文章,函数工作,条件返回true。同时阅读此内容,还有更多内容备份我的代码,我正在更改类的样式,而不是单个元素。我确实想知道是否需要重新定义I变量。如果根据返回true的条件,您在代码中引用这一行:如果(i==x.length)
,那么它显然总是会返回true
。看看你的代码:前面的语句是i=x.length
。你首先给一个变量赋值,然后检查该变量是否有该值。很明显,这总是真的。我要说的是x.length
的值是错误的。我如果您只想使用具有该类的最后一个项,那么它应该是x.length-1
。如果您想使用“getElementsByClassName”找到的所有元素,那么应该使用for
循环。