2017-06-29 45 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); 
});