是否可以在js数组中存储样式属性?

时间:2016-08-28 08:26:08

标签: javascript arrays styles

我创建了一堆样式属性,我想使用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];

}

1 个答案:

答案 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];
}