Javascript rowIndex正在返回-1

Javascript rowIndex正在返回-1,javascript,dom,tablerow,Javascript,Dom,Tablerow,我正在使用greasemonkey脚本,并使用以下代码更新表。我已附上该表的图像。但是,当我单击delete时,rowIndex为所有行返回-1。我不明白为什么它会返回-1 table = document.getElementById( 'keys-table' ); if ( !table ) return; table.innerHTML = ''; // header row = document.createElement( 'tr' ); th = document.create

我正在使用greasemonkey脚本,并使用以下代码更新表。我已附上该表的图像。但是,当我单击delete时,rowIndex为所有行返回-1。我不明白为什么它会返回-1

table = document.getElementById( 'keys-table' );
if ( !table ) return;
table.innerHTML = '';


// header
row = document.createElement( 'tr' );
th = document.createElement( 'th' );
th.innerHTML = "Group"; row.appendChild( th );
th = document.createElement( 'th' );
th.innerHTML = "Key"; row.appendChild( th );
th = document.createElement( 'th' );
th.innerHTML = " "; row.appendChild( th );
table.appendChild( row );

// keys
for ( i = 0 ; i < keys.length ; i++ ) {
    row = document.createElement( 'tr' );
    td = document.createElement( 'td' );
    td.innerHTML = keys[i][0];
    row.appendChild( td );
    td = document.createElement( 'td' );
    td.innerHTML = keys[i][1];
    row.appendChild( td );
    td = document.createElement( 'td' );

    button = document.createElement( 'input' );
    button.type = 'button';
    button.value = 'Delete';
    button.addEventListener( "click", function(event) {
            DeleteKey( event.target.parentNode.parentNode.rowIndex,event.target);
        }, false );
    td.appendChild( button );
    row.appendChild( td );

    table.appendChild( row );
}
table=document.getElementById('keys table');
如果(!table)返回;
table.innerHTML='';
//标题
行=document.createElement('tr');
th=document.createElement('th');
th.innerHTML=“组”;第4行,第4行;
th=document.createElement('th');
th.innerHTML=“Key”;第4行,第4行;
th=document.createElement('th');
th.innerHTML=“”;第4行,第4行;
表2.追加子项(行);
//钥匙
对于(i=0;i

元素希望位于
元素中

通常浏览器会自动插入一个,但如果它插入了,你就用

table.innerHTML = '';
如果确保原始表中有
,请执行此操作

table = document.getElementById( 'keys-table' );
if ( !table ) return;

var tbody = table.tBodies[0];
tbody.innerHTML = '';
…然后将行附加到
tbody
,它将起作用


附带说明,但我个人建议使用DOM方法删除旧行,而不是
innerHTML

var tbody = table.tBodies[0];
while( tbody.firstChild )
    tbody.removeChild( tbody.firstChild );


似乎更合适。

元素希望位于
元素中

通常浏览器会自动插入一个,但如果它插入了,你就用

table.innerHTML = '';
如果确保原始表中有
,请执行此操作

table = document.getElementById( 'keys-table' );
if ( !table ) return;

var tbody = table.tBodies[0];
tbody.innerHTML = '';
…然后将行附加到
tbody
,它将起作用


附带说明,但我个人建议使用DOM方法删除旧行,而不是
innerHTML

var tbody = table.tBodies[0];
while( tbody.firstChild )
    tbody.removeChild( tbody.firstChild );


似乎更合适。

问得好,而且“我不是”的答案正确,请确保在表中附加一个tbody,然后将行附加到此tbody。

问得好,并且“我不是”的答案正确,请确保在表中附加一个tbody,然后将行附加到此tbody