2012-04-17 36 views
5

は、このコードのどこにエラーがあるか把握できません。 Chromeのデバッグコンソールで「Uncaught TypeError:31行目で未定義のaddEventListenerメソッドを呼び出せません!未知の型エラー:未定義のメソッド 'addEventListener'を呼び出すことができません

jewel.dom = (function() { 

    var $ = Sizzle; 

    function hasClass(el, clsName){ 

     var regex = new RegExp("(^|\\s) + clsName + (\\s|$)"); 
     return regex.test(el.className); 
    } 

    function addClass(el, clsName) { 

     if (!hasClass(el,clsName)) { 
      el.className += ""+ clsName; 
     } 
    } 

    function removeClass (el, clsName) { 

     var regex = new RegExp("(^|\\s)" + clsName + "(\\s|$)"); 
     el.className = el.className.replace(regex, " "); 
    } 

    function bind(element, event, handler) { 

     if (typeof element == "string") { 
      element = $(element)[0]; 
     } 

     element.addEventListener(event, handler, false) 
} 

    return { 
     $:$, 
     hasClass : hasClass, 
     addClass : addClass, 
     removeClass : removeClass, 
     bind : bind 
    }; 
;})(); 
+2

「要素」が存在しません。 'bind()'を呼び出すコードと 'element 'を定義するコードを投稿してください。 – Teemu

+0

見つけた!それは別のスクリプトの問題でした。私はGoogle Chromeの開発者のコ​​ンソールを使用しましたが、正しいスクリプトでコールバックを追跡しました: –

答えて

0

は、それはあなたのbind呼び出しがundefinedelementで終わる場合だろうか? (たとえば、DOMの要素と一致しないセレクタを渡した場合)

0

「addEventListener」の内容がわからないブラウザがあります。これを試してください:

Element.prototype.setEvent = function(eventName, handler) 
{ 
    if(document.addEventListener) 
    { 
     this.addEventListener(eventName, handler); 
    } 
    else 
    { 
     if(document.attachEvent) 
     { 
      this.attachEvent("on" + eventName, handler); 
     } 
    } 
} 
element.setEvent(eventName, handler); 

removeEventListenerも同じです。文字列はのクラス名が含まれている場合

また、

element = $("." + element)[0]; 

element = $("#" + element); 

は、その文字列は、要素のidが含まれて

element = $(element)[0]; 

と交換しようとする、または素子。

+1

このブラウザは知っています: "TypeError:31行目のメソッド 'addEventListener'' undefined'を呼び出せません " – Teemu

+0

ブラウザの問題ではありません。多分Pavlovは正しいです...さまざまなスクリプトのどこに問題があるのか​​を知っている人... –

1

私の場合、これはEvernote Clipper拡張スクリプトが原因です。エラーを投げるスクリプトをクリックすると、「Evernote」というコメントが表示されます。

+0

私の場合、別のスクリプトでこのエラーが発生しています。 –

関連する問題