我创建了一堆样式属性,我想使用for循环将它们添加到div元素中。我无法弄清楚我的语法有什么问题:
function createShot(){
var shot = new shotConstructor(spaceship.x,(765-(spaceship.y+15)),15,15,"#000000","","","","","","");
var createDiv = document.createElement("div");
var AddId = createDiv.setAttribute("id","shot");
var element = document.getElementById("dv_grid");
var append = element.appendChild(createDiv);
var shotStyle=document.getElementById('shot').style;
var style=[width=shot.w+"px",height=shot.h+"px",left=shot.x+"px",top=shot.y+"px",backgroundColor="#000000",position="absolute"];
for(i=0;i<6;i++){
shotStyle+style[i];
}
答案 0 :(得分:0)
[width=shot.w+"px"]
^^^^^
这是一个全局变量。
[width=shot.w+"px"]
^^^^^^^^^^^
这是您分配给全局变量的值。
然后也将放在数组中。
这为您提供了一个样式属性值数组,这些值与任何属性名称都没有关联。
shotStyle+style[i];
这会将CSSStyleDeclaration转换为字符串,将样式属性值(没有属性名称!)附加到该字符串,然后丢弃结果(因为您不能将其分配到任何地方)。
您需要使用值存储属性名称。由于顺序并不重要,您应该通过使用对象而不是数组来实现。
var style = {
width: shot.w + "px",
height: shot.h + "px",
left: shot.x + "px",
top: shot.y + "px",
backgroundColor: "#000000",
position: "absolute"
};
然后,您需要使用适当的语法循环对象,并使用每个属性的名称和值。
for (var prop in style) {
shotStyle[prop] = style[prop];
}