createElement或appendChild不起作用

时间:2016-03-16 18:05:13

标签: javascript

我正在尝试将img元素放在我使用JavaScript动态创建的span元素中。问题是span元素没有显示在DOM树中。但是,img元素显示在页面上并嵌套在我的html代码中硬编码的div元素(#playfield)中。我真的不知道我做错了什么。

var playfield = document.getElementById("playfield");
var indexes = [0,1,2,3,4,5,6,7,8,9,10,11];
shuffle(indexes);

for (var i = 0; i < 12; i++) {
    var vak1 = document.createElement("span");
    var kaart1 = document.createElement("img");
    var path1 = "img/kaart" + indexes[i] + ".png";
    var klasse1 = "img" + indexes[i];
    kaart1.setAttribute("src", "img/achterkant.png");
    kaart1.setAttribute("class", klasse1);
    kaart1.setAttribute("data-img", path1);
    kaart1.setAttribute("height", "150");
    kaart1.setAttribute("width", "150");
    kaart1.setAttribute("data-turned","false");
    playfield.appendChild(vak1.appendChild(kaart1));
 }

3 个答案:

答案 0 :(得分:4)

playfield.appendChild(vak1.appendChild(kaart1));问题就在于此。 vak1.appendChild(kaart1)的结果是附加的子kaart1 - 分别执行以下两项操作:

vak1.appendChild(kaart1);
playfield.appendChild(vak1);

答案 1 :(得分:1)

var playfield = document.getElementById("playfield");
var indexes = [0,1,2,3,4,5,6,7,8,9,10,11];


for (var i = 0; i < 12; i++) {
    var vak1 = document.createElement("span");
    var kaart1 = document.createElement("img");
    var path1 = "img/kaart" + indexes[i] + ".png";
    var klasse1 = "img" + indexes[i];
    //kaart1.setAttribute("src", "img/achterkant.png");
    kaart1.setAttribute("class", klasse1);
    kaart1.setAttribute("data-img", path1);
    kaart1.setAttribute("height", "150");
    kaart1.setAttribute("width", "150");
    kaart1.setAttribute("data-turned","false");
    vak1.appendChild(kaart1)
    playfield.appendChild(vak1);
 }

追加到第一个,然后将其添加到游戏区。

答案 2 :(得分:0)

您将创建的<img>作为孩子添加到#playfield。如果您想要<span>,则必须将其添加到<span>然后<span>添加到#playfield