Программно создавая <DIV>с и возникают проблемы - PullRequest
0 голосов
/ 23 февраля 2009

Я новичок в javascript и написал кусок кода (вставлено ниже). Я пытаюсь построить небольшую игру "Морской бой". Подумайте об этой игре с сеткой, где вы размещаете свои корабли и начинаете слепо нажимать на сетку противников, если она поразит любой из кораблей противника. Проблема в том, что мне нужно получить функцию с идентификатором DIV для передачи в качестве параметра. Когда DIV создается программно, как показано ниже, что будет работать. Это? : - /// <. DIV id = 'what' onclick = 'javascript: function (this.ID)' /> .. Я где-то видел что-то подобное .. this внутри 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 ]

7 голосов
/ 23 февраля 2009

Звучит так, будто вы действительно хотите получить элемент div, на который только что нажали. Если вы просто хотите вернуть выбранный div, все, что вам нужно сделать, это использовать «this»:

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

Если вы на самом деле больше заинтересованы в том, чтобы кликнуть по идентификатору div, вы можете сделать это:

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

Однако, похоже, вы просто хотите получить идентификатор, чтобы вы могли получить div с помощью getElementById, и первый фрагмент кода поможет вам пропустить этот шаг.

1 голос
/ 24 февраля 2009

Вместо создания внутреннего html из строк вы можете создать его с помощью jQuery и добавить прослушиватели событий, например, так:

$("<div></div>")
  .click(function(e) {
    selectTarget(i, who);
  })
  .appendTo(container);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...