回避策がある非常に奇妙な問題に遭遇しましたが、実際にはなぜそれが起こっているのかわかりません。
基本的に、既存のDOM要素を取得し、innerHTMLを使用して追加DOM要素を作成してから、そのonclickイベントのイベントハンドラーを配置します。
for(i=0; i<contextMenuModel.length; i++) {
contextMenuRow = contextMenuModel[i];
currentRowId = "edit_context_table_row_" + i;
editTable.innerHTML += "<div id='" + currentRowId + "'></div>";
row = dojo.byId(currentRowId);
row.innerHTML += "<span>" + contextMenuRow.labelName + "</span>";
row.innerHTML += "<span>" + contextMenuRow.eventName + "</span>";
dojo.connect(row, "onclick", row, rowClickHandler);
}
問題はこれです:最後の行だけがonclickハンドラーで終わります。他の人はしません。使用しているブラウザは関係ありません。dojo.connectをに変更しても関係ありません。
row.onclick = rowClickHandler;
また、私が取り出す場合:
row.innerHTML += "<span>" + contextMenuRow.eventName + "</span>";
それでも機能しません。
ただし、私が見つけた回避策(これにより、これがさらに改善されます)は、これが機能することです。
for(i=0; i<contextMenuModel.length; i++) {
contextMenuRow = contextMenuModel[i];
currentRowId = "edit_context_table_row_" + i;
editTable.innerHTML += "<div id='" + currentRowId + "'></div>";
row = dojo.byId(currentRowId);
row.innerHTML += "<span>" + contextMenuRow.labelName + "</span>";
row.innerHTML += "<span>" + contextMenuRow.eventName + "</span>";
}
for(i=0; i<contextMenuModel.length; i++) {
row = dojo.byId("edit_context_table_row_" + i);
dojo.connect(row, "onclick", row, rowClickHandler);
}
そのような奇妙な問題。