Press "Enter" to skip to content

IE下var的重要性的又一佐证

一个朋友问了一个js问题, 一段看不出有任何问题的代码, 在ie下报错:"object doesn't support this property or method".

function foo(obj) {
   productTree = obj.toString();
   document.getElementById('productTree').innerHTML = productTree;
}

开始, 还以为错误是指obj的toString方法, 绕了半天弯路, 无果..
后来,注意到变量名是productTree没有用var申明, 加上getElementById('productTree')说明有个id为productTree的元素, 并且我们知道在IE下可以直接通过id获取DOM元素的引用, so~
所以啊, 局部变量一定要用var申明, 不仅仅是因为不用var会成全局变量, 更因为在IE下, 有可能会出现这种, 让人很莫名的错误....

13 Comments

  1. poppy playtime
    poppy playtime May 14, 2022

    Great!!! When I searched for this, I found this site at the top of all the blogs in the search engine.

  2. json formatter
    json formatter March 3, 2021

    ie确实会出现很多莫名的问题 难受

  3. Tumblr search engine
    Tumblr search engine November 16, 2020

    我遇到过一模一样的问题 不知道原因 加上var可以了

  4. hotmail email login
    hotmail email login March 17, 2020

    我喜欢阅读你的博客文章。 这实际上是我想要的,我很高兴来到这里!

  5. madalin stunt cars 2
    madalin stunt cars 2 October 2, 2018

    IE下标签的ID可以直接作为变量使用。和加不加var无关。明白?

  6. linuxpluto
    linuxpluto March 3, 2015

    你这不是佐证,是误导别人
    IE下标签的ID可以直接作为变量使用。和加不加var无关。明白?

  7. 小民哥
    小民哥 October 16, 2012

    我遇到过一模一样的问题 不知道原因 加上var可以了

  8. kgh
    kgh April 25, 2011

    JavaScript 是一门灵活的语言,但往往越是灵活就越是容易出错!有些东西还是强制规范好些的!

  9. mark35
    mark35 December 13, 2010

    据统计各种语言代码中中出现fuc..k词语频率是JS最高。因为IE系列的存在。呵呵。

  10. janpoem
    janpoem January 22, 2010

    这是ie的老问题了,应该规范使用var声明变量。

  11. yangliang
    yangliang January 21, 2010

    难道window下的所有变量ie都认为是dom咯,该死的ie

  12. rzhome
    rzhome January 21, 2010

    在IE下就是这样的痛苦,不过加var来声明变量应该规范点。

Comments are closed.