0

我有一个功能,下面是几行:

    if(ele.next())
        {
            if(ele.next().className == 'errmark')
                ele.next().remove(); 
        } 

现在,除了 IE8 之外的所有浏览器都可以正常工作,我收到以下错误:

Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CMDTDF; BRI/1)
Timestamp: xxx


Message: Object doesn't support this property or method
Line: 166
Char: 5
Code: 0
URI: XXXXXXXXXXXXXXXX

有人请帮助我..谢谢..

4

4 回答 4

0

检查这是否有效

ele = $(ele);
var next = ele ? ele.next() : null;
if (next && next.hasClassName('errmark')) {
    next.remove();
}

关于ele(它是什么,它指向哪个元素)的其他信息也会有所帮助。

于 2013-05-17T07:55:17.037 回答
0

PrototypeJS 有一个类似于上面提到的方法,称为hasClassName(). hasClassName()做你想做的事,但在 PrototypeJS 支持的所有浏览器中使其成为标准。

http://api.prototypejs.org/dom/Element/prototype/hasClassName/

所以要改进你的javascript

if(ele.next())
    {
        if(ele.next().hasClassName('errmark'))
            ele.next().remove(); 
    } 

此外,您可以.className在支持该属性的浏览器中访问使用 PrototypeJS 扩展的元素的属性。

于 2013-05-13T16:22:24.797 回答
0

我得到了解决方案用 if($(ele).next()) 替换行 if(ele.next())

于 2013-05-17T08:19:08.690 回答
0

我假设您使用的是 jquery(ele.next()是 jquery 语法);

ele.next()会给你一个 jquery 对象/元素,它没有.className属性。 .className属性仅在本机 javascript dom 对象中可用,您可以像这样访问它:ele.next()[0]


您在这里有 2 个选项:

1将 JavaScript 与 jQuery 混合使用(不推荐):

if (ele.next()[0].className === 'errmark') ele.next().remove();

2使用 jQuery(推荐):

if (ele.next().hasClass('errmark')) ele.next().remove();


这是整个块 - 改进:

var next = ele.next();
if (next.length && next.hasClass('errmark')) next.remove();
于 2013-05-13T10:21:50.333 回答