【发布时间】:2015-11-15 09:42:40
【问题描述】:
我想让我的 javascript 做什么:
我有一个 div,其中包含一个已添加的“onmouseover='getPosition(x)'”,当我按下某个按钮。函数 'getPosition()' 始终在 div 尚未删除时运行,因此它将始终获取和更新 div 的位置并在 文本字段占位符
$("#canvas").append('<div onmouseover="getPosition(this.id);"style="top:'+initXYpos+'px; left:'+initXYpos+'px;">Button '+index+'</div>');
问题:
当我删除包含“getPosition(this.id)”的 div 时,它仍然会运行该函数,但会出现错误: "TypeError: null 不是一个对象(评估'document.getElementById(x).style')"
我只是希望它在我删除 div 时停止运行。
这是 getPosition(x) 的函数:
function getPosition(x){
$('#canvas_container').mouseover(function(){
timer = setInterval(function() {
var xPos = document.getElementById(x).style.left;
var yPos = document.getElementById(x).style.top;
document.getElementById(x+'_fieldX').placeholder = xPos;
document.getElementById(x+'_fieldY').placeholder = yPos;
}, 10); }
注意:
如果你认为我的问题是由一个愚蠢的错误引起的,我很抱歉。我是 Javascript 的新手,希望您能理解并乐于帮助我。
【问题讨论】:
-
看看
unbind()api.jquery.com/unbind -
为什么你的 getPosition 函数中有这个
$('#canvas_container').mouseover(function(){ -
你想要
clearInterval(timer),它永远不会停止运行直到清除 -
函数因为间隔而一直运行,所以我目前能想到的最聪明的是清除间隔(定时器)和解除绑定鼠标悬停事件,因为如果您只删除事件侦听器,则计时器间隔在任何情况下都将永远运行,除非您将其清除。有没有机会得到一个演示小提琴来进一步帮助你?
标签: javascript jquery html css typeerror