【发布时间】:2011-01-28 06:09:45
【问题描述】:
我遇到了一个奇怪的问题,我正在创建很多动态 div。我最近发现我的一些 div 不会触发 onclick 事件?所有的 div 都是使用相同的模板创建的,为什么有些不起作用?大多数时候,它是从底部开始的 4-5。如果您单击其他之一,然后再试一次,您可能会触发其中一个。但只是偶尔。
创建 div 的代码:
// Code to loop thru the number of players and create the divs accordingly
for (fieldNumber = 0; fieldNumber < 18; fieldNumber++) {
var holderDiv = CreateDiv('gameCellLarge', '');
holderDiv.style.width = 150 + extraCellWidth + 'px'; // Ändra storleken beroende på antalet spelare
if (fieldNumber == 0 || fieldNumber == 6 || fieldNumber == 8 || fieldNumber == 17)
newField = CreateDiv('gameCellMedium borderFull gameText', gameText[fieldNumber]);
else
newField = CreateDiv('gameCellMedium borderWithoutTop gameText', gameText[fieldNumber]);
holderDiv.appendChild(newField);
for (playerNumber = 0; playerNumber < players.length; playerNumber++) {
holderDiv.appendChild(players[playerNumber].InitField(fieldNumber));
}
gameFieldDiv.appendChild(holderDiv);
}
GameField.prototype.InitField = function(fieldNumber) {
var newField = document.createElement("div");
if (fieldNumber == 0 || fieldNumber == 6 || fieldNumber == 8 || fieldNumber == 17)
newField.className = 'gameCellSmall borderFull gameText gameTextAlign';
else
newField.className = 'gameCellSmall borderWithoutTop gameText gameTextAlign';
var instance = this;
if (fieldNumber == 6 || fieldNumber == 7 || fieldNumber == 17) { }
else
newField.onclick = function() { instance.DivClick(fieldNumber); return false; }
this.fields[fieldNumber] = newField;
this.score[fieldNumber] = 0;
return newField;
}
我在 click 函数中添加了 return false,但它的行为仍然很奇怪。为什么有些不触发?我创建了大约 18 个 div/播放器。但即使我只创建一个播放器也会发生这种情况。
完成后我是否可能需要取消活动? (就像 return false; 正在尝试做的那样) 有时有效,但并非总是...
我的想法已经用完了,这是脚本的链接。也许我只是错过了一些东西。 The script 我对其进行了一些更改,因此只需按下按钮并单击游戏字段的下端(yatzy、kåk 等)。单击时它应该弹出警报。有时他们工作,有时他们不工作。
【问题讨论】:
标签: javascript class dynamic html onclick