2014-01-10 27 views
0

在下面的代碼中,我需要編寫刪除類(魔鬼)的元素的功能,我寫了刪除功能,但有些錯誤。感謝您的時間!錯誤,當我試圖刪除一個元素

HTML代碼

<html> 
    <title>Test</title> 
    <head> 
     <link rel="stylesheet" type="text/css" href="style.css"> 
     <script type="text/javascript" src="javascript.js"></script> 
    </head> 
    <body onload="draw()" onclick="shoot(event)"> 
      <div id="box" onmousemove="move(event)"> 
       <img id="aim"src="img/1.png" alt=""> 
      </div> 
      <div id="borderleft"></div> 
      <div id="info">  
      </div> 

    </body> 
</html> 

CSS代碼

body{ 
    margin: 0px; 
} 
img{ 
    position: absolute; 
} 

#box{ 
    background-color: #c0c0c0; 
    width: 500px; 
    height: 500px; 
    cursor: none; 
    z-index: 2; 

} 
#info{ 
    width: 524px; 
    height: 30px; 
    border: 1px; 
    background-color: gray; 
    position: absolute; 
} 

#borderleft{ 
    top:-25px; 
    height: 525px; 
    width: 25px; 
    margin-left: 499px; 
    background-color: gray; 
    position: absolute; 
} 

#info, #border{ 

    z-index: 3; 
} 


.devil{ 
    z-index: 1; 

} 

和JavaScript代碼

function move(e){ 
    if(e.clientX<500 && e.clientY<500){ 
    // alert(e.clientX+":"+e.clientY) 
    //cautam divul info 
    info=document.getElementById("info") 

    //schimbam textul din terior 
    //innerHTML- 
    info.innerHTML=e.clientX+":"+e.clientY 

    //miscam imaginea cu mouse 
    //gasim imaginea dupa id 
    aim=document.getElementById("aim"); 
    aim.style.left=(e.clientX-25)+"px"; 
    aim.style.top=(e.clientY-25)+"px"; 
    } 
    //animatia se face mai bine in pozitia absolute 
    //la absolute update se face doar la absolut div da la relative la toata pagina 

} 

//functia care va desena imagini 
function draw(){ 
// generam cantitate de obiecte 
N_objects=parseInt(Math.random()*10); 

// ciclu-adaugam imaginile in boxa 
    //gasim box 
    box=document.getElementById("box"); 

    for(i=0;i<N_objects;i++){ 
    //cream elemente noi 
    o=document.createElement('img'); 
    //setam adresa 
    o.src="img/2.png"; 
    //adaugam element in box 
    box.appendChild(o); 

      o.setAttribute("class","devil") 
    //coordonate aleatoare 
    o.style.left=parseInt(Math.random()*449)+'px'; 
    o.style.top=parseInt(Math.random()*449)+'px'; 
    } 



} 

function shoot(e){ 
// alert(e.clientX+":"+e.clientY) 
devil=document.querySelectorAll('.devil') 
//verificam daca am nimerit in toate imaginile 
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)+50) 
     if(e.clientY<parseInt(devil[i].style.top)+50) 
     { 
      element=getElementByClass("devil"); 
      element.parentNode.removeChild(element) 
     }; 
} 

}

在函數拍攝中,if語句的內部需要一個用(魔鬼)類去除元素的函數,我寫了這行,但是我有一個錯誤。

element=getElementByClass("devil"); 
element.parentNode.removeChild(element) 
+2

爲什麼你不聲明任何變量?危險! – elclanrs

+2

什麼是錯誤信息? – reporter

+0

我是JavaScript新手,這就是爲什麼我沒有變量,在這段代碼中,我沒有看到我是否需要變量。錯誤:Uncaught ReferenceError:getElementByClass未定義 – Chris

回答

0

那麼你有一個方法getElementByClass定義的地方?

JavaScript中沒有getElementByClass,有一個document.getElementsByClassName它返回一個集合。

var element = document.getElementsByClassName("devil")[0]; 
element.parentNode.removeChild(element) 
+0

THx,你的代碼行的作品,但你能告訴我什麼劑量[0]意味着什麼? – Chris

+0

'getElementsByClassname'返回一組元素。括號符號[0]返回該集合中的第一個元素。 – epascarello

+0

哦,但我怎樣才能返回我的情況下,我點擊的元素? – Chris

0

標識被限制在HTML唯一的(某些網頁設計師似乎並不這麼認爲。如果你發現他們中的一個,他們衝)。 不是 - 所以任何找到特定類的方法往往會返回一組它們。

如果您希望只有某個特定的HTML元素,請設置其ID而不是其類別,然後使用getElementById()檢索它。相反,如果您希望有多個特定元素類型(即「borderBox」或「gameEnemy」)使用類,並使用for循環遍歷getElementsByClassName的結果,則可能執行相同的操作在他們每個人。 (如果你不熟悉for循環,你可能真的想要通過一個JavaScript基礎課程)

相關問題