我想知道什么是最好的解决方案。单击鼠标时返回并显示网页上最近的超链接。
本例中有 3DIV
秒。它们每个都带有一个超链接。还有另一个超链接(超链接 D)本身没有DIV
. 假设红点是鼠标点击。
例如
我能想到的解决方案就是遍历所有链接
var a_list = document.getElementsByTagName("a");
然后使用距离方程计算距离c^2 = a^2 + b^2
,所以很简单
var a_list = Array.prototype.slice.call(document.getElementsByTagName("a"))
for( var i = 0 ; i < a_list.length; i++){
Math.sqrt(Math.pow(mouseX - a_list[i].getBoundingClientRect().left,2) +
Math.pow(mouseY - a_list[i].getBoundingClientRect().top,2))
}
这种方法当然需要 O(N) 时间复杂度,其中 N 是我们拥有的链接数。我们能做得更好吗?