これに対する最善の解決策は何だろうと思っています。マウスがクリックされたときに、Web ページ上の最も近いハイパーリンクを返して表示します。
この例には 3 つDIV
の があります。それぞれにハイパーリンクが含まれています。.のない別のハイパーリンク (ハイパーリンク 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 は私たちが持っているリンクの数です。もっとうまくやれるか?