简而言之:我试图理解这个TypeError的含义: 无法执行' getComputedStyle' on' Window':参数1不是'元素' 在浏览Mediawiki的VisualEditor时会出现错误,如下所示:
http://www.wiki.org.il/index.php?title=new-page&veaction=edit
该错误无法匿名创建新页面或编辑维基。 但是,使用不同的皮肤时,错误消失了:
http://www.wiki.org.il/index.php/Main_Page?useskin=vector
wiki在1.25alpha上运行。
答案 0 :(得分:16)
我有同样的错误显示。当我用普通JavaScript替换jQuery选择器时,错误已得到修复。
var this_id = $(this).attr('id');
替换:
getComputedStyle( $('#'+this_id)[0], "")
使用:
getComputedStyle( document.getElementById(this_id), "")
答案 1 :(得分:2)
我在AngularJS v1.5.8中尝试了ng-include
一个不存在的type="text/ng-template"
。
<div ng-include="tab.content">...</div>
确保在使用ng-include时,该指令的数据指向实际的页面/部分。否则,你可能想要:
<div>{{tab.content}}</div>
答案 2 :(得分:1)
在我的情况下,我使用的是ClassName
。
getComputedStyle( document.getElementsByClassName(this_id)) //error
它也可以在没有第二个参数" "
的情况下工作。
这是我完整的运行代码:
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)"
答案 3 :(得分:0)
错误消息指出getComputedStyle
要求参数为Element
类型。您收到它是因为参数的类型不正确。
最常见的情况是您尝试传递一个不存在的元素作为参数:
my_element = document.querySelector(#non_existing_id);
现在该元素为null
,这将导致提到的错误:
my_style = window.getComputedStyle(my_element);
如果无法始终正确获取元素,例如,如果querySelector
未找到任何匹配项,则可以使用以下命令结束功能:
if (my_element === null) return;
答案 4 :(得分:0)
我在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"
解决了该问题。
我本人认为,每次单击第一个span元素时,该范围将为父级span中不存在的下拉子项设置样式,因此会引发错误。
答案 5 :(得分:-21)
错误消息非常简单:getComputedStyle期望Element作为其第一个参数,并将其他内容传递给它。
如果您真正要求的是帮助调试您的皮肤,您应该更加努力地隔离错误。