gpt4 book ai didi

javascript - 使用对象获取位置 (x, y) - Javascript

转载 作者:行者123 更新时间:2023-12-03 17:18:58 24 4
gpt4 key购买 nike

此代码有效:

var myElement = document.getElementById("red"); 
setInterval(function() {
console.log("Left:" + myElement.offsetLeft + "px | Top:" + myElement.offsetTop + "px");
}, 1000);

这会每秒打印出 position(x, y)

但如果我尝试将其更改为使用对象:

function Enemy(id){
this.id = getElementById(id);
this.getCoordinates = function(){
setInterval(function() {
console.log("Left:" + this.id.offsetLeft + "px | Top:" + this.id.offsetTop + "px");
}, 1000);
}
}

$(document).ready(function(){
var enemy = new Enemy("red");
enemy.getCoordinates();

});

它什么也没打印出来——而且我看不出我的错误在哪里。

最佳答案

setIntervalsetTimeout(或任何事件处理程序,如 onclick)中,this 变量引用全局对象。在 window 的浏览器中。

在现代浏览器中你可以这样做:

setInterval((function() {
console.log("Left:" + that.id.offsetLeft + "px");
}).bind(this), 1000); // <------- bind

否则所有其他解决方案基本上与您的第一段代码相似。

请注意,Mozilla 的纯 js 中有一个 bind() 的实现,可以移植到旧版浏览器。在 MDN 上搜索它。

关于javascript - 使用对象获取位置 (x, y) - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com