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