如何修复,未捕获的typeerror对象不是一个函数

时间:2014-08-11 15:05:15

标签: javascript

我正在研究一个inhertied应用程序并在JavaScript中的这行代码中获取错误(Uncaught typeerror:Object不是函数)

var lobj_css = new Object(document.styleSheets("cssName"));

Uncaught typeerror: Object is not a function

它在IE8中可以正常工作,没有任何错误,但IE8以上的任何内容都没有,在Google Chrome中也没有。

1 个答案:

答案 0 :(得分:2)

进行一些故障排除非常简单。

在独立的网页,JS Bin或小提琴中单独尝试违规行, like this

结果相同。现在尝试单独分解,并注释掉Object()构造函数,以便查看document.styleSheets调用是否导致您的问题。

var stylesheets = document.styleSheets("cssName");
// var lobj_css = new Object(stylesheets);

结果:

TypeError: object is not a function

看起来document.styleSheets("cssName")导致问题。让我们点击文档:https://developer.mozilla.org/en-US/docs/Web/API/document.styleSheets

  

Document.styleSheets只读属性为显式链接到文档中或嵌入文档中的样式表返回StyleSheet对象的StyleSheetList。

该页面上的示例:

var styleSheetList = document.styleSheets;

...肯定看起来不像你的例子中的代码。

在我看来遗留代码使用的是对document.styleSheets的非标准调用,该调用是作为函数而不是readonly属性实现的。如果你想保持代码原样,你将不得不填充它,但我建议将其修复为标准。也许你可以迭代样式表列表,直到找到匹配cssName的那个。