gpt4 book ai didi

javascript - Mootools onClick 发送对象

转载 作者:行者123 更新时间:2023-11-28 20:34:11 24 4
gpt4 key购买 nike

我正在尝试将一个对象从它本身的对象发送到另一个对象。

var Tile = new Class({
initialize : function(){
this.inner = new Element(...);
this.inner.addEvent('click', function() {
popup.open(this);
});
}
});

如果我从 Tile out op Popup 中警告任何成员变量,它会警告“未定义”。我做错了什么?

var Popup = new Class({
initialize : function(){
},
open : function(tile) {
alert(tile.width);
}
});

亲切的问候!

最佳答案

当您将 this 传递给 popup 对象时,您正在传递元素本身(我相信这是您的意图)。但是,元素默认没有名为 width 的属性。

也许您正在寻找getSize();?这将返回一个具有两个属性的对象(xy),分别对应于元素的宽度和高度。

我已将您的代码近似为以下 jsFiddle,请尝试一下:http://jsfiddle.net/g4SmJ/

作为引用,这里是新的 Popup 类代码:

var Popup = new Class({
initialize : function(){
},
open : function(tile) {
size = tile.getSize();
console.log(size); // console.log provides a nicer interface for debugging, you can pass objects into it! Use the Chrome Inspector or Firebug to see its output.
alert(size.x);
}
});
<小时/>

回复您的评论:

Oh ups I did not meant to alert the doms width, sorry for that. What I posted is smaller code from the full object. Width actually was a defined member in Tiles that I wanted to alert out of Popup

在这种情况下,当您向 .open(); 发送调用时,您将 this 传递到函数调用中,但您没有传递Tile对象!相反,您传递了您创建的 inner 元素。

这样重写Tile:

var Tile = new Class({
initialize : function(){
var self = this;
this.inner = new Element(...);
this.inner.addEvent('click', function() {
popup.open(self);
});
}
});

关于javascript - Mootools onClick 发送对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15768792/

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