2013-05-13 36 views
0

不工作我有一個功能,下面是幾行字:element.next()在IE8

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 

有人請幫助我.. 謝謝..

+0

更新標籤包括prototypejs,每個操作的評論tborychowski的答案。 – Spudley 2013-05-13 11:31:19

回答

0

我假設你正在使用jQuery(ele.next()是jQuery的語法);

ele.next()會給你一個jquery對象/元素,它沒有.className屬性。 .className屬性僅在原生javascript dom對象中可用,您可以通過它訪問例如像這樣:ele.next()[0]


你有2個選擇這裏:

使用JavaScript和jQuery的混合(不推薦):

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

使用jQuery(推薦):

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


而這裏的整個街區 - 改進:

var next = ele.next(); 
if (next.length && next.hasClass('errmark')) next.remove(); 
+0

你好tborychowski,謝謝你給出答案。但是我正在使用prototye.js庫。不是Jquery – Pratik 2013-05-13 11:17:28

+0

@Pratik - 你應該在問題標籤中加入類似的東西;正如你所看到的,這樣的細節很重要,並對你可能得到的答案做出改變。我會爲你更新標籤。:-) – Spudley 2013-05-13 11:29:55

+0

@Spudley謝謝你的幫助,實際上我對如何使用它沒有太多經驗(問題標籤)。我剛開始的問題和回答這樣..... – Pratik 2013-05-13 11:34:27

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(); 
    } 

而且它是什麼值得你可以訪問在瀏覽器與PrototypeJS擴展元素的.className屬性,支持該屬性。

0

檢查,如果這個工程

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

更多信息有關ele(它是什麼,它指向該元素)也會有所幫助。

0

我得到的解決方案替換行,如果(ele.next())與如果($(ELE)的.next())