2016-03-29 17 views
1

特定のDOM要素のクラスを切り替えるためのJSコードを少し書いています。 すべてが正常に動作していますが、このエラーも発生しており、これは が実行されるのを防止します。さらに別の未知の型エラー::未定義の 'replace'プロパティを読み取ることができません

私は と考えていたので、要素の配列が空でないことを確認するためのチェックを追加しました。これが問題でした。しかし、まだエラーが発生します。デバッグでは、replaceが呼び出されたときに常にold_nameの値が示されました。私は何かJS - esqueを逃していますか?

 

    if (w > MOBILE_THRESHOLD) { 
    responsive_elements = document.getElementsByClassName("desktop"); 
    if (responsive_elements.length > 0) { 
     for (i in responsive_elements) { 
     var old_name = responsive_elements[i].className; 
     var new_name = old_name.replace("desktop", "mobile"); 
     responsive_elements[i].className = new_name; 
     } 
    } 
 

必要な場合には、私はより多くのコードを提供させていただきます、またはどんな情報が必要とされている:

この

は、特にライン31、エラーの原因となるコードの一部です。ありがとう!この場合

答えて

5

Never use for...in loops to iterate array-like objects!!!!!

HTMLCollectionitemnamedItem又は等列挙特性を有します。これらにアクセスするとHTML要素が返されないので、classNameは未定義です。適切に反復する

、あなたはこれらの

for(var i=0; i<responsive_elements.length; ++i) { 
    // ... 
} 

[].forEach.call(responsive_elements, function(element, index, collection) { 
    // ... 
}); 
+0

パーフェクト、感謝のいずれかを使用することができます! – Flip

関連する問題