Javascript Visual studio 2013在使用来自;getElementsByClassName";作用

Javascript Visual studio 2013在使用来自;getElementsByClassName";作用,javascript,visual-studio,intellisense,Javascript,Visual Studio,Intellisense,当通过“getElementById”函数与html元素交互时,我会得到intellisense的完整列表 var canvas = document.getElementById('host-canvas'); 在这个对象上使用点时,我可以看到所有的项目,例如“offsetwidth”。 但是,使用GetElementsByCassName执行相同的操作,然后选择集合的第一个对象并不提供相同的属性 var canvas = document.getElementsByClassName('h

当通过“getElementById”函数与html元素交互时,我会得到intellisense的完整列表

var canvas = document.getElementById('host-canvas');
在这个对象上使用点时,我可以看到所有的项目,例如“offsetwidth”。 但是,使用GetElementsByCassName执行相同的操作,然后选择集合的第一个对象并不提供相同的属性

var canvas = document.getElementsByClassName('host-canvas')[0]; 
现在,当我尝试使用intellisense时,我没有诸如offsetwidth之类的选项。对此有何解释以及我能做些什么来修复它吗?

(我最初写了一条评论说这看起来像是由VS JavaScript IntelliSense引擎的限制引起的错误,但我认为这是错误的,原因如下:)

我认为这是设计的,因为不同类型的多个元素可以共享同一个类,请考虑这个HTML:

 <img class="foo" />
 <p class="foo" />


VS无法知道
fooElement。src
会起作用,因为
元素可能会被返回,而
没有
src=“”
属性。

很好,但是我正在一个javascript文件中测试这一点,这样“getElementById”类就不会知道它是p、img还是任何其他标记。
 var fooElement = document.getElementsByClassName("foo")[0];
 fooElement.src = ; // <-- here