2017-06-13 2 views
0

Warum führt Javascript nicht gleichzeitig zwei Operationen aus? d.h. Zeilenlöschung und Zeileneinfügung.Warum führt Javascript nicht gleichzeitig 2 Operationen aus?

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; 

} 

Die oben angegebene Funktion wird auf Knopfdruck ausgeführt. Es funktioniert, aber ich muss Knopf 2 Mal drücken, d. H. 1. Zeile zu löschen und dann eine neue Zeile hinzufügen, aber ich will es löschen und hinzufügen in einem Klick.

+0

Können Sie ein Beispiel für das Problem angeben, das Sie präsentieren? – Lixus

+2

Ich bin überrascht, dass es überhaupt funktioniert. 'takeSum == true' ist immer' false'. JavaScript löscht die Zeile nicht, weil Sie sie nur löschen möchten, wenn 'takeSum'' 'true' 'ist. Aber Sie initialisieren es mit 'false' und ändern es niemals in' true'. I.e. Du sagst es, niemals die Zeile zu löschen. –

+0

Wenn eine Antwort Ihr Problem gelöst hat, ziehen Sie in Betracht, die Antwort zu akzeptieren. Gehen Sie wie folgt vor [meta.stackexchange.com] (http://meta.stackexchange.com/questions/5234) und machen Sie dasselbe mit dem Häkchen/Häkchen, bis es grün wird. Dies informiert die Community, eine Lösung wurde gefunden. Sonst denken andere vielleicht, dass die Frage noch offen ist und möchten vielleicht (mehr) Antworten posten. Sie erhalten Punkte und andere werden ermutigt, Ihnen zu helfen. Willkommen bei Stack! –

Antwort

1

Alles, was Sie tun müssen, wenn rowCount > 0 Prüfen Sie vor Zeile aus der Tabelle

Versuchen Sie, diese zu löschen:

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

In der früheren Antwort, wenn es keine Zeile gibt es in der Tabelle ist dann table.deleteRow(rowCount-1) wird funktioniert nicht, also überprüfen Sie die Zeilenanzahl, um zu bestätigen, dass in der zu löschenden Tabelle eine Zeile verfügbar ist.

1

Sie sollten diese ersetzen:

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

mit diesem:

table.deleteRow(rowCount-1); 

Trotz der Tatsache, dass diese, um Ihren Code nicht klar ist, sollte der Wert von tookSum wahr sein an der erste Klick. Daher wird beim ersten Klick eine Zeile gelöscht und der Wert tookSum wird auf "false" gesetzt. Beim zweiten Klick würde also keine Zeile gelöscht und eine neue Zeile eingefügt. Ich habe diese Annahme gemacht basierend darauf, dass Sie behaupten, dass es wahr ist, Sie müssen klicken und die Funktion alterTable wird ausgeführt, wenn Sie auf die Schaltfläche klicken, die Sie erwähnten.

Verwandte Themen