電子書籍の厳選無料作品が豊富!

チェックボックスを使ってループで回しながらTRを削除しようとしているんですが、連続でチェックするとうまくいきません。
ご教授宜しくお願いします。

function test()
{
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].type == "checkbox" && inputs[i].checked) {
tb1.deleteRow(i);
}
}
};


<table border="1" id="tb1">
<tr>
<td><input type="checkbox" name="flag" value=""></td>
<td>0</td>
</tr>
     ・
     ・
     ・
<tr>
<td><input type="checkbox" name="flag" value=""></td>
<td>9</td>
</tr>
</table>
<input type="button" value="削除" onclick="test();"><br>

}

A 回答 (5件)

こんな風にすると、流れがわかりやすいかと


<script>
function test(){
var p=document.getElementById("tb1").getElementsByTagName("tbody")[0];
var n=p.firstChild;
while(n){
var d=null;
if(n.nodeName=="TR" && n.getElementsByTagName("input")[0].checked) d=n;
n=n.nextSibling;
if(d) p.removeChild(d);
}
}
</script>


<table border="1" id="tb1">
<tbody>
<tr><td><input type="checkbox"></td><td>0</td></tr>
<tr><td><input type="checkbox"></td><td>1</td></tr>
<tr><td><input type="checkbox"></td><td>2</td></tr>
<tr><td><input type="checkbox"></td><td>3</td></tr>
<tr><td><input type="checkbox"></td><td>4</td></tr>
<tr><td><input type="checkbox"></td><td>5</td></tr>
<tr><td><input type="checkbox"></td><td>6</td></tr>
<tr><td><input type="checkbox"></td><td>7</td></tr>
<tr><td><input type="checkbox"></td><td>8</td></tr>
<tr><td><input type="checkbox"></td><td>9</td></tr>
</tbody>
</table>
<input type="button" value="削除" onclick="test();"><br>
    • good
    • 0
この回答へのお礼

ありがとうございました。
大変参考になりました。

お礼日時:2008/12/09 23:59

1と2です。

まったく勘違いしてました!忘れてください。;_;
    • good
    • 0
この回答へのお礼

またよろしくお願いします。

お礼日時:2008/12/10 00:00

調べてないけど、


削除する毎に行番号がずれこむのでうまくいかないのでは?
for (var i = inputs.length; i>=0 ; i--) {
こんな風に逆順で処理してみては?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
上記では出来ませんでした。

お礼日時:2008/12/10 00:01

訂正


if( obj.tagName =='INPUT' && obj.type=='checkbox' && (obj = parentSearch( obj, 'TR' )) ) obj.removeNode( obj );
    • good
    • 0

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "?

http://www.w3.org/TR/html4/strict.dtd">
<title>Calendar</title>
<table border="1">
<tr><td><input type="checkbox">abc</td></tr>
<tr><td><input type="checkbox">def</td></tr>
<tr><td><input type="checkbox">ghi</td></tr>
<tr><td><input type="checkbox">jkl</td></tr>

<script type="text/javascript">
addEvent( document.body, 'click', chk );
function chk( evt ){
var obj = evt.target || evt.srcElement;
if( obj = parentSearch( obj, 'TR' ) ) obj.removeNode( obj );
}
function parentSearch(elementId, tagname){
var element = ( typeof( elementId ) == 'string' )? document.getElementById( elementId ): elementId;
while( element.tagName != tagname ){
if(element.tagName == 'BODY') return false;
element = element.parentNode;
} return element;
}

function addEvent(elementId, evt, eventHandler, flag){
var element = ( typeof( elementId ) == 'string' )? document.getElementById( elementId ): elementId;
element./*@cc_on @if(1)attachEvent('on'+ @else@*/addEventListener(/*@end@*/evt, eventHandler, flag);
}
</script>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!