web-dev-qa-db-ja.com

JS: 'Window'で 'getComputedStyle'を実行できませんでした:パラメーターは 'Element'型ではありません

要するに、私はこのTypeErrorの意味を理解しようとしています: 'Window'で 'getComputedStyle'を実行できませんでした:パラメーター1は 'Element'タイプではありません。

http://www.wiki.org.il/index.php?title=new-page&veaction=edit

このエラーでは、匿名で新しいページを作成したり、Wikiを編集したりすることはできません。ただし、別のスキンを使用すると、エラーは消えます。

http://www.wiki.org.il/index.php/Main_Page?useskin=vector

Wikiは1.25alphaで実行されます。

19
Kwiki

これと同じエラーが表示されました。 jQueryセレクターを通常のJavaScriptに置き換えたときに、エラーが修正されました。

var this_id = $(this).attr('id');

交換:

getComputedStyle( $('#'+this_id)[0], "")

と:

getComputedStyle( document.getElementById(this_id), "")
16
Anish

JQueryではなくAngularJSでこのエラーが発生した場合:

私はAngularJS v1.5.8でng-include a type="text/ng-template"存在しませんでした。

 <div ng-include="tab.content">...</div>

Ng-includeを使用する場合、そのディレクティブのデータが実際のページ/セクションを指していることを確認してください。それ以外の場合は、おそらく次のものが必要です。

<div>{{tab.content}}</div>
2
J.D. Mallen

私の場合、ClassNameを使用していました。

getComputedStyle( document.getElementsByClassName(this_id)) //error

また、2番目の引数" "なしでも機能します。

完全な実行コードは次のとおりです。

function changeFontSize(target) {

  var minmax = document.getElementById("minmax");

  var computedStyle = window.getComputedStyle
        ? getComputedStyle(minmax) // Standards
        : minmax.currentStyle;     // Old IE

  var fontSize;

  if (computedStyle) { // This will be true on nearly all browsers
      fontSize = parseFloat(computedStyle && computedStyle.fontSize);

      if (target == "sizePlus") {
        if(fontSize<20){
        fontSize += 5;
        }

      } else if (target == "sizeMinus") {
        if(fontSize>15){
        fontSize -= 5;
        }
      }
      minmax.style.fontSize = fontSize + "px";
  }
}


onclick= "changeFontSize(this.id)"
1

エラーメッセージは、getComputedStyleElementタイプである必要があることを示しています。パラメーターのタイプが正しくないため、それを受け取ります。

最も一般的なケースは、引数として存在しない要素を渡そうとすることです。

my_element = document.querySelector(#non_existing_id);

要素がnullになったので、言及されたエラーが発生します。

my_style = window.getComputedStyle(my_element);

常に要素を正しく取得できない場合は、たとえば、querySelectorが一致するものを見つけられなかった場合、次を使用して関数を終了できます。

if (my_element === null) return;
1

Angular6プロジェクトでも同じエラーが発生しました。これらの解決策はどれもうまくいかないようでした。問題はdropdownとして指定されたがドロップダウンオプションが含まれていない要素が原因であることが判明しました。以下のコードを見てください:

<span class="nav-link" id="navbarDropdownMenuLink" data-toggle="dropdown"
                          aria-haspopup="true" aria-expanded="false">
                        <i class="material-icons "
                           style="font-size: 2rem">notifications</i>
                        <span class="notification"></span>
                        <p>
                            <span class="d-lg-none d-md-block">Some Actions</span>
                        </p>
                    </span>
                    <div class="dropdown-menu dropdown-menu-left"
                         *ngIf="global.localStorageItem('isInSadHich')"
                         aria-labelledby="navbarDropdownMenuLink">
                                        <a class="dropdown-item" href="#">You have 5 new tasks</a>
                                        <a class="dropdown-item" href="#">You're now friend with Andrew</a>
                                        <a class="dropdown-item" href="#">Another Notification</a>
                                        <a class="dropdown-item" href="#">Another One</a>
                    </div>

コードの削除data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" 問題を解決しました。

私自身は、最初のスパン要素をクリックするたびに、スコープが親スパンに存在しなかったドロップダウンの子のスタイルを設定すると予想していたため、エラーをスローしたと思います。

0
Far