2013-02-07 54 views
0

正在此錯誤在IE8 F12工具JavaScript錯誤「未實現」在IE8

我想寫unobstrusive驗證代碼,其中我會請身體的onload validate()方法,它會在附加驗證碼元素的特定事件取決於其類名。 (例如,使用類「必需的」文本框它將附加要求()它的onblur)

enter image description here

,這是什麼錯誤的原因是什麼?

編輯

問題不是在getElementsByClassName方法()方法,因爲它返回與你可以在IE8看到所需的類元件的陣列手錶

enter image description here

+0

可能是一個範圍問題.. – Rinku

+0

任何猜測究竟在哪裏? – Mahesha999

+0

可能tenhouse是正確的..他給出的鏈接很好..然後 – Rinku

回答

0
IE8不支持

getElementsByClassName

您可以試試document.querySelectorAlldocument.querySelector。它更靈活,使用起來非常舒適。

你的情況,那就是:

var a = document.querySelectorAll(".required"); 

您可以使用基本的CSS選擇器,讓您的DOM的元素,如querySelector("#ID .class")你在jQuery的會。

+0

問題編輯,請參閱編輯 – Mahesha999

+1

好吧,試試'querySelectorAll'並看看這是否解決了你的問題......你有沒有自定義的插件或框架運行? – Christoph

+0

是的,在IE8中工作,但意識到任何方式使其在IE5(甚至IE7)的工作 - 以防萬一 – Mahesha999

0

嘗試這種解決方案 - 我測試了它,它適用於你的代碼片段(你必須把他寫在「更新」中的代碼段落):

javascript document.getElementsByClassName compatibility with IE

看起來像getElementsByClassName在IE8中不受支持。

順便說一句:這是一個很好的例子,爲什麼你應該使用jQuery的 - 因爲你不會有這樣的問題存在:)

編輯: 我測試它像這樣:

<!DOCTYPE html> 
<html> 
    <head> 
     <script type="text/javascript"> 

      function getElementsByClassName(node, classname) { 
       var a = []; 
       var re = new RegExp('(^|)'+classname+'(|$)'); 
       var els = node.getElementsByTagName("*"); 
       for(var i=0,j=els.length; i<j; i++) 
        if(re.test(els[i].className))a.push(els[i]); 
       return a; 
      } 

      window.onload = function() { 
       var a = getElementsByClassName(document.body,"required"); 

       for(var i = 0;i < a.length;i++) 
        a[i].onblur = function() { alert("blured")}; 
      }; 
     </script> 
    </head> 
    <body> 
     <input class="required" type="text" name="uno" /> 
     <input class="required" type="text" name="duno" /> 
    </body> 
</html> 
+0

哇謝謝誰無論什麼原因downvoted。 –

+0

oops該方法是在那裏行和陣列正在正確填充,現在我意識到[i]類型的DispHTMLInputElement的問題,它沒有onblur和onclick事件,因爲我可以在IE的類型列中看到它,無論如何,我可以把它投入到輸入元素? – Mahesha999

+0

不知道你的意思?檢查我的編輯爲例 –