2009-08-15 15 views
5

まず最初に私はJSを学んでおり、私が必要とすることをすべて知るまではライブラリを使用しません。それとJavascript IEとgetElementsByClassNameの問題

http://www.tombarrasso.com/search/

地球上で私のコードは、など< IE 7、Firefoxの< 3で動作しない理由を言いましたか? Safari 4は完璧です、Firefox 3.5は素晴らしいです。 Robert NymanからgetElementsByClassName関数を使用しています。

OS Xの私のIE 6(Wine経由)にエラーは発生しません。 Ajaxリクエストは問題ありませんが、id = "one"、class = "scroller"の初期divが必要ですが、そうではありません。 私はちょうどこれでとてもイライラしています。それはすでにあなたに実行しているブラウザの互換性の問題を抱えているよう

おかげで、

  • トム個人的に
+0

あなたが投稿できますコード?どこにそれを見つけるのか分からない:D –

+0

http://www.tombarrasso.com/search/x.js – Tom

+1

.setAttribute( "class"、 "scroller")はいくつかのIEでは良くないので、私も.setAttribute( "className"、 "scroller")。さらに、私はIEで1つを保持しないので、すべての.appendChild()を1行に追加する必要がありました。しかし、IE 8はIE 6と7のようにこれらを観察しません。 – Tom

答えて

4

は、私は、jQueryのを使用します。

すべてを学ぶのは大丈夫です。インプリメンテーションの互換性を処理する場合は、IMHOに対処する方がよいでしょう。私が気にしないことがいくつかあります:P

2

IE8は、javascriptでgetElementsByClassNameを使用すると「Objectはプロパティまたはメソッドをサポートしていません」というエラーが表示されます。代わりにこれを試してください。

if (document.getElementsByClassName) { 
    var obj = document.getElementsByClassName('classA'); 
} 
0

私はjQueryを使用して、これらの逆方向クライアントをサポートする問題をie7で解決しました。

旧:

var editrow = grid.get_element().getElementsByClassName("rgEditRow")[0]; 

新:あなたがよりよい解決策として、これを使用することができます..or

var editrow = $(".rgEditRow", grid.get_element())[0]; 
8

...

if (typeof document.getElementsByClassName!='function') { 
    document.getElementsByClassName = function() { 
     var elms = document.getElementsByTagName('*'); 
     var ei = new Array(); 
     for (i=0;i<elms.length;i++) { 
      if (elms[i].getAttribute('class')) { 
       ecl = elms[i].getAttribute('class').split(' '); 
       for (j=0;j<ecl.length;j++) { 
        if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) { 
         ei.push(elms[i]); 
        } 
       } 
      } else if (elms[i].className) { 
       ecl = elms[i].className.split(' '); 
       for (j=0;j<ecl.length;j++) { 
        if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) { 
         ei.push(elms[i]); 
        } 
       } 
      } 
     } 
     return ei; 
    } 
}