简单JavaScript错误(未定义)
在下面的代码中,我有一个错误(简单JavaScript错误(未定义),javascript,Javascript,在下面的代码中,我有一个错误(uncaughtreferenceerror:devildead未定义)为什么?我正在尝试移动在同一位置删除另一个元素后创建的元素。除了添加用于移动新元素的代码行外,所有操作都有效 function shoot(e){ // alert(e.clientX+":"+e.clientY) devil=document.querySelectorAll('.devil') for(i=0;i<devil.lengt
uncaughtreferenceerror:devildead未定义)为什么?我正在尝试移动在同一位置删除另一个元素后创建的元素。除了添加用于移动新元素的代码行外,所有操作都有效
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);
}
}
};
}
功能射击(e){
//警报(e.clientX+:“+e.clientY)
devil=document.queryselectoral(“.devil”)
对于(i=0;iParSet(恶魔[i].style.left))
if(e.clientY>parseInt(魔鬼[i].style.top))
如果(e.clientX非常简单,则发生这种情况是因为您试图访问此行中未定义的数组(devilded
):
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
我怀疑事实上应该是(根据上面的线):
您在这一行中将devildead
作为变量引用:
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
您没有在任何地方定义它,因此在尝试访问它时会出现错误。在这一行中:
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
您将“devilded”称为一个对象,但它不是一个对象。有一个元素的类名是“devilded”,但您从未将其转换为Javascript对象。没有定义devilded数组,如果没有伴随它的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++)
{
功能射击(e){
//警报(e.clientX+:“+e.clientY)
devil=document.queryselectoral('.devil');
//插入新数组
var-devilded=document.getElementsByClassName(“devilded”);
对于(i=0;iYou var currentTop=parseInt(getComputedStyle(devilded[i])。top,10);devilded在var top中看起来是一个字符串,但在var currentTop中是一个变量。由于devilded未定义为对象,因此会出错。这取决于devilded
应该包含什么?它与devil[i]完全相同,它包含类中的所有图像“DevilDed”“代码工作”非常广泛-我不确定您的函数试图做什么,因此我无法确定您的正确性。我可以告诉您为什么会出现错误,这将有助于您了解应该做什么。您可以“删除”“删除错误的代码行,但这在逻辑上可能不是您想要的。如果您能给我您的skype以显示我的代码,这将对我非常有用。我有另一个问题,对于中等JavaScript程序员来说很简单,我不知道如何在这里提问:)如果您有时间,谢谢。