开发者问题收集

使用 javascript 创建 div 不起作用

2014-05-30
85

我尝试在单击另一个 div 时创建 div,但什么也没发生,控制台也没有显示任何内容。我已进行研究,但未找到任何相关信息。如能提供任何帮助,我将不胜感激。

HTML

<!DOCTYPE html>
<html>
    <head>
        <title>
        Space Invaders
        </title>
        <script type = 'text/javascript' src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'></script>
        <link href="style.css" rel="stylesheet" type="text/css" />
        <script src="script.js" type="text/javascript">               </script>
    </head>
    <body>
    <div>
        <div id="startbtn"><br />Start Game
        </div>
        <br />
        <center>
        <div id="game" onClick = 'buttonClick'>
        </div>
        <div id="game2">
        </div>
        </center>
        <div id="titlepage">
        </div>
    </div>
    </body>
</html>

CSS

#startbtn
{
    height: 60px;
    width: 100px;
    border-radius: 5px;
    background-color: #69D2E7;
    text-align: center;
    color: #000000;
    font-family: Arial;
    opacity: 0.5;
    margin: auto;
}
#game { 
    display: none;
    margin: auto;
}
#game2
{ 
    display: none;
    margin: auto;
}
#grid {
    display: inline-block;
    background-color: #000000;
    width: 20px;
    height: 20px;
    border-radius: 2px;
}

JavaScript

var row1 = [];
$(document).ready(function() 
{
    $('#startbtn').click(function(){
        for (var i = 0; i<9; i++)
    {
        row1[i] = document.createElement('div');
        row1[i].id = 'grid';
        document.getElementById('game').appendChild(row1[i]);
        }
    }   
    });
});
2个回答
for (var i = 0; i<9; i++)
{
    row1[i] = document.createElement('div');
    row1[i].id = 'grid';

id 属性在文档中必须是唯一的。您不能创建 9 个具有相同 grid id 的 div。

user229044
2014-05-30

您必须设置唯一的 ID。一个简单的方法是在 ID 上添加计数变量:

    for (var i = 0; i<9; i++)
    {
        row1[i] = document.createElement('div');
        row1[i].id = 'grid' + i;
        document.getElementById('game').appendChild(row1[i]);
    }

编辑

我注意到了可能让您感到困惑的地方。您希望 div 的 ID 为 grid ,因此您需要为它们设置相同的样式。我从您的 css #grid 中获取了这一点。

您应该通过 css 类来实现这一点。将 css 样式从 #grid 更改为 .grid ,然后将此类添加到创建的 div(记住要使 ID 唯一):

    for (var i = 0; i<9; i++)
    {
        row1[i] = document.createElement('div');
        row1[i].id = 'grid' + i;
        row1[i].className = 'grid';
        document.getElementById('game').appendChild(row1[i]);
    }
LcSalazar
2014-05-30