2017-06-29 70 views
-2

我想在每次點擊屏幕時在不同位置追加球,但我無法弄清楚如何寫box.innerHTML。innerHTML可以動態嗎?

腳本:

var ball = document.getElementById("ball"); 
var box = document.getElementById("box"); 

box.addEventListener("click",function(e){ 
    var x = e.clientX -50; 
    var y = e.clientY -50; 
    box.innerHTML += '<div id="ball" style="left:'x'px;top:'y'px;"></div>'; 

}) 

CSS:

*{ 
    margin: 0; 
    padding: 0; 
} 

    #box { 
     width: 100%; 
     height: 100%; 
     background-color: dimgrey; 
     position: absolute; 
    } 

    #ball { 
     position: absolute; 
     width: 100px; 
     height: 100px; 
     border-radius: 50%; 
     background-color: white; 
    } 
+3

似乎你可能不明白字符串連接如何工作。 '「foo」+「酒吧」; //「foobar」''「foo」「bar」//語法錯誤' –

+0

請提供HTML以及澄清你正在嘗試做什麼以及你有什麼問題。 –

回答

0
box.innerHTML += '<div id="ball" style="left:' + x + 'px;top:' + y + 'px;"></div>'; 

來連接字符串,你需要添加一個+字符串和您的變量之間。

0

您的連接錯誤。請嘗試:

box.innerHTML += '<div id="ball" style="left:' + x + 'px;top:' + y + 'px;"></div>'; 

在JavaScript中,您可以使用+連接字符串。

JS Fiddle

0

我認爲這是沒有必要使用大量的div具有相同的ID。最好定義他們的類

.ball { 
    position: absolute; 
    width: 100px; 
    height: 100px; 
    border-radius: 50%; 
    background-color: white; 
}  

var box = document.getElementById("box"); 

box.addEventListener("click",function(e){ 
    var x = e.clientX -50; 
    var y = e.clientY -50; 

    var element = document.createElement("div"); 
    element.style.top = y+'px'; 
    element.style.left = x+'px'; 
    element.className = "ball"; 
    box.appendChild(element); 
});