如果div在某个位置,触发javascript函数
If div is at a certain position, trigger javascript function
我有一个 div,它会在按下箭头键时移动。如果 div 到达某个位置,通过坐标获得,在屏幕上,我想要一个函数 运行,更改 div 的 innerHTML。有什么简单易懂的方法来做到这一点?
<div class="counter" id="yellow">P1</div>
<div id="div"></div>
document.onkeydown = detectKey;
function detectKey(e) {
if (selectedElement) {
if (e.keyCode == '39') {
var posLeft = selectedElement.offsetLeft
selectedElement.style.left = (posLeft + 150) + "px"
}
if (e.keyCode == '38') {
var posTop = selectedElement.offsetTop
selectedElement.style.top = (posTop - 150) + "px"
}
if (e.keyCode == '37') {
var posLeft = selectedElement.offsetLeft
selectedElement.style.left = (posLeft - 150) + "px"
}
if (e.keyCode == '40') {
var posTop = selectedElement.offsetTop
selectedElement.style.top = (posTop + 150) + "px"
}
}
}
if (document.getElementById("yellow").position = x = 89, y = 273) {
document.getElementById("div").innerHTML = "Made it!"
}
下面是一些代码示例。
第一件主要的事情是元素位置样式属性必须设置为绝对。然后我们可以使用左右样式属性来改变位置。
要检查位置,您可以使用 .getBoundingClientRect();这给出了一个矩形。
然后我们使用顶部作为 y,左侧作为 y。
现在在我的示例中,我使用了一些虚拟值,但是如果您想触发一次,将其向下移动一次,您可以更改 if 语句中的值以使其在您想要的位置触发。
<div class="counter" id="yellow" style="position:absolute">P1</div>
<div id="div"></div>
<script>
let selectedElement = document.getElementById("yellow")
document.onkeydown = detectKey;
function detectKey(e) {
if (selectedElement) {
console.log(e.keyCode)
if (e.keyCode == '39') {
console.log('here')
var posLeft = selectedElement.offsetLeft
selectedElement.style.left = (posLeft + 150) + "px"
}
if (e.keyCode == '38') {
var posTop = selectedElement.offsetTop
selectedElement.style.top = (posTop - 150) + "px"
}
if (e.keyCode == '37') {
var posLeft = selectedElement.offsetLeft
selectedElement.style.left = (posLeft - 150) + "px"
}
if (e.keyCode == '40') {
var posTop = selectedElement.offsetTop
selectedElement.style.top = (posTop + 150) + "px"
}
let pos = selectedElement.getBoundingClientRect();
let y = pos.top
let x = pos.left
console.log(x)
console.log(y)
// put your own values or ranges here
if (x < 100 && y > 100) {
document.getElementById("div").innerHTML = "Made it!"
}
}
}
</script>
我有一个 div,它会在按下箭头键时移动。如果 div 到达某个位置,通过坐标获得,在屏幕上,我想要一个函数 运行,更改 div 的 innerHTML。有什么简单易懂的方法来做到这一点?
<div class="counter" id="yellow">P1</div>
<div id="div"></div>
document.onkeydown = detectKey;
function detectKey(e) {
if (selectedElement) {
if (e.keyCode == '39') {
var posLeft = selectedElement.offsetLeft
selectedElement.style.left = (posLeft + 150) + "px"
}
if (e.keyCode == '38') {
var posTop = selectedElement.offsetTop
selectedElement.style.top = (posTop - 150) + "px"
}
if (e.keyCode == '37') {
var posLeft = selectedElement.offsetLeft
selectedElement.style.left = (posLeft - 150) + "px"
}
if (e.keyCode == '40') {
var posTop = selectedElement.offsetTop
selectedElement.style.top = (posTop + 150) + "px"
}
}
}
if (document.getElementById("yellow").position = x = 89, y = 273) {
document.getElementById("div").innerHTML = "Made it!"
}
下面是一些代码示例。 第一件主要的事情是元素位置样式属性必须设置为绝对。然后我们可以使用左右样式属性来改变位置。 要检查位置,您可以使用 .getBoundingClientRect();这给出了一个矩形。 然后我们使用顶部作为 y,左侧作为 y。 现在在我的示例中,我使用了一些虚拟值,但是如果您想触发一次,将其向下移动一次,您可以更改 if 语句中的值以使其在您想要的位置触发。
<div class="counter" id="yellow" style="position:absolute">P1</div>
<div id="div"></div>
<script>
let selectedElement = document.getElementById("yellow")
document.onkeydown = detectKey;
function detectKey(e) {
if (selectedElement) {
console.log(e.keyCode)
if (e.keyCode == '39') {
console.log('here')
var posLeft = selectedElement.offsetLeft
selectedElement.style.left = (posLeft + 150) + "px"
}
if (e.keyCode == '38') {
var posTop = selectedElement.offsetTop
selectedElement.style.top = (posTop - 150) + "px"
}
if (e.keyCode == '37') {
var posLeft = selectedElement.offsetLeft
selectedElement.style.left = (posLeft - 150) + "px"
}
if (e.keyCode == '40') {
var posTop = selectedElement.offsetTop
selectedElement.style.top = (posTop + 150) + "px"
}
let pos = selectedElement.getBoundingClientRect();
let y = pos.top
let x = pos.left
console.log(x)
console.log(y)
// put your own values or ranges here
if (x < 100 && y > 100) {
document.getElementById("div").innerHTML = "Made it!"
}
}
}
</script>