有人可以告訴我這個問題。我需要在d3.xhr
請求處理結束時獲取鼠標指針所在的html元素。和隊列內該d3.xhr
應該呼籲:async.queue
如何在d3.xhr和異步隊列中獲取鼠標位置的元素?
define([
"d3",
"lodash",
"async",
], function (d3, _, async) {
var html = d3.select("html");
async.queue(function (cell, callback) {
d3.xhr("/myurl", function (error, data) {
var data = _.merge(JSON.parse(data.response), cellDetails);
//processing data
console.log(d3.mouse(html)); //this line fails
}
}
出現在控制檯
Uncaught TypeError: Cannot read property 'sourceEvent' of null
k @ d3.v3.min.js:1
aa.mouse @ d3.v3.min.js:3
(anonymous function) @ myJSfile.js:77
(anonymous function) @ d3.v3.min.js:1
t @ d3.v3.min.js:1
u @ d3.v3.min.js:1
的誤差一般任務是隱藏工具不當,因爲現在它不會消失每次。更詳細地說。 我們有一個表:
<table>
<tr>
<td class="fav">Data 1</td>
<td>Data 2</td>
<td>Data 3</td>
</tr>
<tr>
<td class="fav">Data 1</td>
<td>Data 2</td>
<td>Data 3</td>
</tr>
<tr>
<td class="fav">Data 1</td>
<td>Data 2</td>
<td>Data 3</td>
</tr>
</table>
<div class="tooltip" style="visibility:hidden"></div>
我們應該能夠導航到該表中的電池中,當對細胞的mouseenter然後JS異步隊列內經由d3.xhr發送請求。因此,如果鼠標仍然在同一個單元格上,我們必須在工具提示中顯示響應。此驗證需要,因爲請求/響應需要一些時間,用戶可能導航到另一個單元格,甚至超出表格邊界。在這種情況下,我們應該隱藏工具提示。
我試圖在桌面上添加像'mouseenter','mouseleave'這樣的事件,頁面上的html和其他元素,但是它對我來說不起作用。更容易驗證鼠標在哪裏。 請幫忙。
console.log(event.clientX);也沒有工作。返回未定義 – Volodymyr