在我目前正在处理的Web应用程序中,我遇到了一些看似古怪的处理javascript文档可见性的东西。在这个应用程序中,我有一个div,其中包含一个表示节点和边缘网络的InfoVis图,我为它实现了拖动缩放功能。如果您不熟悉它(很可能),InfoVis是一个js库,可以将图形和其他可视化呈现到HTML5画布中。
我对InfoVis的核心.js进行了大量修改,以自定义外观和功能,这就是我计划实现拖动缩放的地方。
我正在处理的.html页面加载了InfoVis核心及其带有<script../>
标记的.js文件。
在InfoVis核心中,为画布背景定义onMouseDown: function(e) { alert("click"); }
按预期工作,但是,当改变div(在实际的.html文件中实例化并在.css文件中设置样式)时,如下所示:
onMouseDown: function(e) {
e = e || window.event;
dragging = true;
$("#dragZoom")[0].style = "display: block; width: 0px; height: 0px; left: "+e.clientX+"; top: "+e.clientY+";";
}
要设置div的新样式,$("#dragZoom")
未定义[0]
。换句话说,javscript块无法在文档中看到div。
但是,如果我在另一个.js文件(而不是InfoVis核心)中定义函数function foo() { alert($("#dragZoom")[0]); }
,我可以像这样调用foo()
onMouseDown: function(e) {
foo();
}
和foo()可以访问div!
为什么从一个.js文件中可以看到这个,而当它们以相同的方式加载时,不是另一个。?这并不能阻止我完成任何事情,但我认为这很奇怪,并想知道发生了什么。感谢您的任何信息!