我正在創建一種很酷的事物,基本上它只是繪製而不使用畫布,因爲我認爲「我到底會玩什麼,周圍有一些JS「。現在我的電腦可以處理大約4,000個不同的元素,然後變成laggy,如果我能確定是否在我創建的新div下有div,然後將其刪除,我可以將該數字設置得更大。如何檢查一個元素是否與另一個元素處於相同位置javascript
如何檢測腳本是否已經創建了一個新元素,並在不使用外部庫的情況下刪除現有元素?
<!DOCTYPE html>
<html>
<head>
<title>Drawing thing</title>
</head>
<body onmousedown="setYes()" onmouseup="setNo()">
<div id="appendThingsHere"></div>
<style>
.circle{
height:50px;
width:50px;
background:blue;
border-radius:50%;
position:absolute;
-moz-user-select:none;
-webkit-user-select:none;
user-select:none;
}
body{
overflow:hidden;
}
#appendThingsHere{
height:100%;
width:100%;
background:none;
position:absolute;
top:0;
left:0;
}
</style>
<script>
var mouseDown = "no";
var elements = 0;
function setYes(){
mouseDown = "yes";
}
function setNo(){
mouseDown = "no";
}
document.body.onmousemove = function(e){
if(mouseDown === "yes"){
if(elements < 4000){
var newCircle = document.createElement("div");
newCircle.className = "circle";
newCircle.style.top = e.clientY - 25 + 'px';
newCircle.style.left = e.clientX - 25 + 'px';
try{
var elem = document.elementFromPoint(e.clientX - 25 + 'px', e.clientY - 25 + 'px');
elem.parentElement.removeChild(elem);
elements = elements - 1;
alert("Got one!");
}
catch(err){
}
elements ++;
document.getElementById('appendThingsHere').appendChild(newCircle);
}
}
}
</script>
</body>
</html>
http://jsbin.com/hocowa/edit?html,output
您實際上並未使用畫布,只是將元素附加到DOM。使用畫布時,您可以繪製多少個圓圈並不限制。 – Blender
我知道,這就是我所說的。但是在DOM中有4k個元素,它會有些滯後。這就是我的問題...... – AlgoRythm
是的,但他所說的是你應該絕對使用帆布。 –