- 選択した行の ID を配列に追加します。
- [削除] ボタンをクリックすると、最初に選択した行 (配列の最初の項目) のカスタム確認ダイアログを表示する関数が呼び出されます。
- アラートのいずれかのボタンをクリックすると、本来の動作が実行され、
- ダイアログを閉じます
- 最後の要素まで、配列内の次の項目に対して 2 番目と 3 番目のステップを実行します。
基本的な例を次に示します。
Javascript
<script>
var itemsToDelete = new Array;
function updateItemsToDelete( row ) {
var getIndex = itemsToDelete.indexOf( row.id );
if ( getIndex == -1 ) {
itemsToDelete.push( row.id );
} else {
itemsToDelete.splice( getIndex, 1 );
}
}
function removeRow( rowID ) {
var toDelete = document.getElementById( rowID );
toDelete.parentNode.removeChild( toDelete );
itemsToDelete.shift();
requestConfirmation();
}
function nextPlease() {
itemsToDelete.shift();
requestConfirmation();
}
function requestConfirmation() {
if ( itemsToDelete.length == 0 ) {
document.getElementById( "box" ).style.display = "none";
return;
}
document.getElementById( "box" ).style.display = "block";
document.getElementById( "message" ).innerHTML = "Remove " + itemsToDelete[0] + "?";
document.getElementById( "yes_button" ).onclick = function() { removeRow( itemsToDelete[0] ); };
document.getElementById( "no_button" ).onclick = nextPlease;
}
</script>
HTML
<div id="box" style="display:none;">
<span id="message"></span>
<input type="button" id="yes_button" value="yes" />
<input type="button" id="no_button" value="no" />
</div>
<table>
<tr id="row1">
<td>
<input type="checkbox" onclick="updateItemsToDelete( this.parentNode.parentNode );" />
</td>
<td>row 1</td>
</tr>
<tr id="row2">
<td>
<input type="checkbox" onclick="updateItemsToDelete( this.parentNode.parentNode );" />
</td>
<td>row 2</td>
</tr>
<tr id="row3">
<td>
<input type="checkbox" onclick="updateItemsToDelete( this.parentNode.parentNode );" />
</td>
<td>row 3</td>
</tr>
<!-- and so on... -->
</table>
<input type="button" onclick="requestConfirmation();" value="delete selected" />