为什么';Javascript不能同时执行两个操作吗?

为什么';Javascript不能同时执行两个操作吗?,javascript,frontend,dom-events,Javascript,Frontend,Dom Events,为什么Javascript不能同时执行两个操作?i、 e.行删除和行插入 var tookSum= false; function alterTable() { //Textboxes code var tBoxCompany= document.getElementById("txtboxCompany"); var tBoxAmount= document.getElementById("txtboxAmount&

为什么Javascript不能同时执行两个操作?i、 e.行删除和行插入

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;
  
} 

单击按钮时执行上述给定功能。它可以工作,但我必须按两次按钮,即先删除行,然后添加新行,但我希望它在一次单击中“删除并添加”。

您应该替换此:

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

table.deleteRow(rowCount-1);

尽管您的代码不清楚这一点,,但第一次单击时,
tookSum
的值应为真。因此,在第一次单击时,一行被删除,
tookSum
值被更新为false。因此,第二次单击“无”时,将删除行并插入新行。我之所以这样做是因为您声称这是真的,您需要单击,并且当您单击您提到的按钮时,会执行函数
alterTable

您应该替换它:

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

table.deleteRow(rowCount-1);

尽管您的代码不清楚这一点,,但第一次单击时,
tookSum
的值应为真。因此,在第一次单击时,一行被删除,
tookSum
值被更新为false。因此,第二次单击“无”时,将删除行并插入新行。我这样做的假设是基于您声称是真的,您需要单击并在您单击所提到的按钮时执行函数
alterTable

所有您需要做的,在从表中删除行之前检查
行数>0

试试这个:

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

在前面的回答中,如果表中不存在行,则
表。deleteRow(rowCount-1)
将不起作用,因此请检查row count以确认表中有一行可删除。

从表中删除行之前,请检查
rowCount>0

试试这个:

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

在前面的回答中,如果表中不存在行,则
table.deleteRow(rowCount-1)
将不起作用,因此请检查row count以确认表中有一行可供删除。

您能提供一个您提出的问题的示例吗?我很惊讶它能起作用
tookSum==true
总是
false
。JavaScript不会删除该行,因为您告诉它只有在
tookSum
true
时才删除该行。但是您正在使用
false
初始化它,并且从不将其更改为
true
。换句话说,你告诉它永远不要删除行。如果答案解决了你的问题,考虑接受答案。下面是如何返回此处并对勾号/复选标记执行相同操作,直到其变为绿色。这将通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,并可能希望发布(更多)答案。您将获得积分,并鼓励其他人帮助您。欢迎来到Stack!你能提供一个你所提出的问题的例子吗?我很惊讶它能起作用
tookSum==true
总是
false
。JavaScript不会删除该行,因为您告诉它只有在
tookSum
true
时才删除该行。但是您正在使用
false
初始化它,并且从不将其更改为
true
。换句话说,你告诉它永远不要删除行。如果答案解决了你的问题,考虑接受答案。下面是如何返回此处并对勾号/复选标记执行相同操作,直到其变为绿色。这将通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,并可能希望发布(更多)答案。您将获得积分,并鼓励其他人帮助您。欢迎来到Stack!