2017-06-13 2 views
0

JavaScriptが2つの操作を同時に実行しないのはなぜですか?行の削除と行の挿入。なぜJavaScriptは2つの操作を同時に実行しませんか?

var tookSum= false; 

function alterTable() 
{ 

    //Textboxes code 

    var tBoxCompany= document.getElementById("txtboxCompany"); 
    var tBoxAmount= document.getElementById("txtboxAmount"); 



    //table code 

    var table= document.getElementById("tableNetWorths"); 

    var rowCount= table.rows.length; 

    if(tookSum == true) 
    { 
     table.deleteRow(rowCount-1); 
     tookSum= false; 
    } 

    var row= table.insertRow(rowCount); 

    var Cell1= row.insertCell(0); 
    var Cell2= row.insertCell(1); 

    Cell1.innerHTML= tBoxCompany.value; 
    Cell2.innerHTML= tBoxAmount.value; 

} 

上記の機能は、ボタンをクリックすると実行されます。それは動作しますが、ボタンを2回押す、つまり1行目を削除してから新しい行を追加する必要がありますが、1回のクリックで「削除して追加」する必要があります。

+0

提示している問題の例を挙げることはできますか? – Lixus

+2

私はそれがまったく驚いています。 'tookSum == true'は常に' false'です。 'tookSum'が' true'の場合にのみ削除するように指示しているので、JavaScriptは行を削除しません。しかし、あなたはそれを 'false'で初期化していて、それを' true'に変更することはありません。私。行を削除しないように指示しています。 –

+0

回答があなたの問題を解決した場合は、回答を受け入れることを検討してください。次に、[meta.stackexchange.com](http://meta.stackexchange.com/questions/5234)がここに戻って、ティック/チェックマークが緑色に変わるまで同じことをします。これはコミュニティに通知し、解決策が見つかりました。そうでない場合、他の人は質問がまだ開いていると思うかもしれませんし、(もっと)回答を投稿したいかもしれません。あなたはポイントを獲得し、他の人はあなたを助けることを奨励されます。スタックへようこそ! –

答えて

1

あなたがする必要があるのは、このお試しくださいテーブルから

を行を削除する前にrowCount > 0かどうかをチェックする:以前の回答では

if(rowCount > 0) 
{ 
    table.deleteRow(rowCount-1); 
} 

を、何の行が存在しない場合table.deleteRow(rowCount-1)意志その後、テーブルに存在し作業しないので、行数をチェックして、削除するテーブルに使用可能な行があることを確認します。

1

あなたはこの置き換える必要があります。これで

if(tookSum == true) 
{ 
    table.deleteRow(rowCount-1); 
    tookSum= false; 
} 

:これはあなたのコードに明確ではないという事実にもかかわらず

table.deleteRow(rowCount-1); 

を、tookSumの値はにおける真でなければなりません最初のクリックしたがって、最初のクリックで行が削除され、tookSumの値がfalseに更新されます。だから、もう一度クリックしないと、行が削除され、新しい行が挿入されます。私はあなたが主張していることに基づいてこの仮定をしていた、クリックして機能する必要があるalterTableは、あなたが言及したボタンをクリックすると実行されます。

関連する問題