以编程方式创建<div>并出现问题</div>

时间:2009-02-23 15:58:05

标签: javascript jquery html

我是javascript的新手并编写了一段代码(粘贴在下面)。我正在尝试建造一个小型战舰游戏。想想那个带有网格的游戏,你可以放置你的船只并开始盲目地点击对手网格,如果它会击中任何一个对手的船只。问题是我需要使用DIV的ID来调用函数作为参数传递。当DIV以编程方式创建时,如下所示,将起作用。这个? : - ///&lt; .DIV id ='whatever'onclick ='javascript:function(this.ID)'/&gt; ..我在某处看到......就在html里面:S

js代码是:(有两个网格,由参数表示 - 谁 - ...网格的大小也是参数化的)

function createPlayGround(rows, who)
{
    $('#container').hide();
        var grid = document.getElementById("Grid" + who);
        var sqnum = rows * rows;

        var innercode = '<table cellpadding="0" cellspacing="0" border="0">';
             innercode += '<tr>';
                for (i=1;i<=sqnum;i++)
                {
                    var rowno = Math.ceil(i / rows);
                    var colno = Math.ceil(i - ((rowno-1)*rows));
                    innercode += '<td><div id="' + who + '-' + i +'" class="GridBox'+ who +'" onmouseover="javascript:BlinkTarget(' + i + ',' + who +');" onclick="javascript:SelectTarget('+ i + ',' + who +');" >'+ letters[colno - 1] + rowno +'</div></td>';
                        if (i % rows == 0)
                        {
                           innercode += '</tr><tr>';
                        }
                }
            innercode += '</tr></table>';
            grid.innerHTML = innercode;
        $('#container').fadeIn('slow');
}

2 个答案:

答案 0 :(得分:7)

听起来你真正想要的是获得刚刚点击的div元素。如果你只想返回被点击的div,你所要做的就是使用“this”:

<div id="whatever" onclick="function(this)"></div>

如果你真的对点击div的id更感兴趣,你可以这样做:

<div id="whatever" onclick="function(this.id)"></div>

然而,听起来你只需要id就可以使用getElementById获取div,第一个代码片段将帮助你跳过这一步。

答案 1 :(得分:1)

不是从字符串创建内部html,而是可以使用jQuery创建它并添加事件监听器,如下所示:

$("<div></div>")
  .click(function(e) {
    selectTarget(i, who);
  })
  .appendTo(container);