【发布时间】:2011-09-30 17:49:48
【问题描述】:
我正在创建一个拖放重页并为每个可拖动元素提供defaultTop 和defaultLeft 属性,以便我可以轻松地将其重置为原始位置。直到突然,reset 函数将它们的值报告为未定义,这很好且不起眼。因为当它坏掉时我没有在处理这些部件(他们已经工作了一段时间)我不确定我哪里出错了。感谢您的帮助。
创建元素的函数是:
function makeTool(id, imgURL, defaultL, defaultT,trayname){
var a=document.createElement('img');
a.setAttribute('src', imgURL);
a.setAttribute('id',id);
a.setAttribute('class','drag');
a.intray=true;
a.tray=trayname;
a.rotation=0;
a.style.zIndex=document.getElementById(trayname).style.zIndex+1;
document.getElementById(trayname).appendChild(a);
a.defaultTop=ExtractNumber(document.getElementById(trayname).style.top)+defaultT;
a.defaultLeft=ExtractNumber(document.getElementById(trayname).style.left)+defaultL;
a.style.top=a.defaultTop+'px';
a.style.left =a.defaultLeft+'px';
a.addEventListener('touchstart', function(e) { return self.touchStart(e) }, false);
a.addEventListener('gesturestart', function(e) { return self.gestureStart(e) }, false);
a.addEventListener('touchmove', function(e) { return self.touchMove(e) }, false);
a.addEventListener('touchend', function(e) { return self.touchEnd(e) }, false);
tools.push(a);
return a;
}
而reset函数是:
function reposition(t){
console.log(t+' top: '+document.getElementById(t).defaultTop);
document.getElementById(t).style.left=document.getElementById(t).defaultLeft+'px';
document.getElementById(t).style.top=document.getElementById(t).defaultTop+'px';
}
这是我得到undefined日志的地方
【问题讨论】:
-
只是出于兴趣:你为什么要从头开始写这么多?为什么不使用像 jQuery 这样的库来为您完成所有繁重的工作?
-
主要是因为我边走边学,而且我有一段时间没有使用 jQuery,所以它并没有像其他方式那样节省时间
-
您是否尝试过
console.log(a.defaultTop)a.defaultTop的定义?是否从一开始就分配了undefined? -
在您的 makeTool 函数日志中设置 a.defaultTop 值。那里定义正确吗?
-
@Anton: 是也不是...我创建了 n 个工具,然后我遍历了工具数组,记录了这些值,并且它们设置得很好。但是我在使用 document.getelementbyid 时没有做同样的事情。我现在在用手机,所以不能立即检查,但我会的。真正困扰我的是它曾经可以工作(现在仍然可以在 iPad webapp 中使用,但不能在移动 safari 中使用)
标签: javascript attributes properties