在下面的代码中我有一个错误(Uncaught ReferenceError: devildead is not defined
)为什么会这样?我试图移动在同一个地方删除另一个元素之后创建的元素。所有的工作,除非我添加移动该新元素的代码行。
function shoot(e){
// alert(e.clientX+":"+e.clientY)
devil=document.querySelectorAll('.devil')
for(i=0;i<devil.length;i++)
{
if (e.clientX>parseInt(devil[i].style.left) )
if(e.clientY>parseInt(devil[i].style.top) )
if(e.clientX<parseInt(devil[i].style.left)+75 )
if(e.clientY<parseInt(devil[i].style.top)+75 )
{
topbird=devil[i].style.top
leftbird=devil[i].style.left
devil[i].parentNode.removeChild(devil[i])
die.play();
o=document.createElement('img');
o.src="img/birddead.png";
box.appendChild(o);
o.setAttribute("class","devildead");
o.style.left=leftbird;
o.style.top=topbird;
//Starting from here i have an error
var delay =1;
var top = document.getElementsByClassName("devildead")[i];
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
setTimeout(move, delay);
function move(){
if (currentTop <= 400 ) {
currentTop+=2;
left.style.top = currentTop + "px";
setTimeout(move, delay);
}
}
};
}
答案 0 :(得分:0)
很简单,它发生的原因是你试图在这一行上访问一个未定义的数组(devildead
):
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
我怀疑实际上应该(基于上面的一行):
var currentTop = parseInt(getComputedStyle(devil[i]).top, 10);
答案 1 :(得分:0)
您将devildead
称为此行中的变量:
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
您尚未在任何地方定义它,因此当您尝试访问它时会出现错误。
答案 2 :(得分:0)
在这一行:
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
你指的是“魔鬼”&#39;作为一个对象,但它不是一个对象。有一个元素,其className是&#39; devildead&#39;,但您从未将其转换为Javascript对象。
答案 3 :(得分:0)
devildead数组没有定义,没有附带的html它很难。
看起来你需要在你的数组上面定义的devildead。
function shoot(e){
// alert(e.clientX+":"+e.clientY)
devil=document.querySelectorAll('.devil');
// Insert new array
var devildead = document.getElementsByClassName("devildead");
for(i=0;i<devil.length;i++)
{