2

在我目前正在开发的一个 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。

但是,如果我function foo() { alert($("#dragZoom")[0]); }在另一个 .js 文件(不是 InfoVis 核心)中定义一个函数,我可以像这样调用 foo()

onMouseDown: function(e) {
  foo();
}

并且 foo() 可以访问 div!

当它们都以相同的方式加载时,为什么从一个 .js 文件而不是另一个文件中可以看到这一点..?这并没有阻止我完成任何事情,但我认为这很奇怪,想知道发生了什么。感谢您提供任何信息!

4

0 回答 0