添加最后一个元素而不是最近添加的输入的JavaScript数组

添加最后一个元素而不是最近添加的输入的JavaScript数组,javascript,Javascript,晚上好。我是JavaScript新手,我的小项目需要帮助,我这里只有一个问题,就是this.Add=函数()。 当我从列表中输入重复值时,它可以正常工作,因此它会显示一个警报,表示不允许重复。但是当我输入一个唯一的值时,它只将myTasks列表中最后一个元素(洗碗)相加。而不是我最近输入的,列表继续添加相同的。我是不是把什么东西放错地方了? 这是我的最后一项活动,我想完成它,进入下一个功能。先谢谢你。 任务积垢 #任务{ 显示:无; } ✖ 名称 var app=新函数(){

晚上好。我是JavaScript新手,我的小项目需要帮助,我这里只有一个问题,就是this.Add=函数()。 当我从列表中输入重复值时,它可以正常工作,因此它会显示一个警报,表示不允许重复。但是当我输入一个唯一的值时,它只将myTasks列表中最后一个元素(洗碗)相加。而不是我最近输入的,列表继续添加相同的。我是不是把什么东西放错地方了? 这是我的最后一项活动,我想完成它,进入下一个功能。先谢谢你。


任务积垢
#任务{
显示:无;
}
✖

名称 var app=新函数(){ this.el=document.getElementById('myTasks'); this.myTasks=[“打扫浴室”、“洗碗碟”]; this.Count=函数(数据){ var el=document.getElementById('counter'); 变量名称='任务'; 如果(数据){ 如果(数据>1){ name=‘要做的事情’; } el.innerHTML=数据+“”+名称; }否则{ el.innerHTML='No'+名称; } }; this.FetchAll=function(){ var数据=“”; 如果(this.myTasks.length>0){ 对于(i=0;i
在for循环中:

for (task of this.myTask) {
}
您没有声明新的任务变量,而是将其分配给外部
任务
变量,因此重复添加列表中已有的任务

您可以在for作用域中声明一个新变量,如下所示:

for (const task of this.myTask) {
}
在for循环中:

for (task of this.myTask) {
}
您没有声明新的任务变量,而是将其分配给外部
任务
变量,因此重复添加列表中已有的任务

您可以在for作用域中声明一个新变量,如下所示:

for (const task of this.myTask) {
}
你的HTML就是这样

您的Javascript如下所示。检查任务是否已存在于数组中时出现错误。在比较字符串值时,可以使用带三重等于的简单for循环,也可以按照我下面所附的操作

var app = new function() {
    
      this.el = document.getElementById('myTasks');
    
      this.myTasks = ['Clean the bathroom', 'Wash the dishes'];
    
      this.Count = function(data) {
        var el   = document.getElementById('counter');
        var name = 'task';
    
        if (data) {
          if (data > 1) {
            name = 'Things To DO';
          }
          el.innerHTML = data + ' ' + name ;
        } else {
          el.innerHTML = 'No ' + name;
        }
      };
      
      this.FetchAll = function() {
        var data = '';
    
        if (this.myTasks.length > 0) {
          for (i = 0; i < this.myTasks.length; i++) {
            data += '<tr>';
            data += '<td>' + this.myTasks[i] + '</td>';
            data += '<td><button onclick="app.Edit(' + i + ')">Edit</button></td>';
            data += '<td><button onclick="app.Delete(' + i + ')">Delete</button></td>';
            data += '</tr>';
          }
        }
    
        this.Count(this.myTasks.length);
        console.log(this.myTasks.length);
        return this.el.innerHTML = data;
      };
    
      this.Add = function () {
        el = document.getElementById('add-task');
        // Get the value
        var task = el.value;
        console.log(task);
        
        if (task ){ 
                        var arrayContainsTask = (this.myTasks.indexOf(task) > -1);
           
            if(arrayContainsTask == true){
                    window.alert("Duplicates not allowed.");
            }else{
                // Add the new value
                this.myTasks.push(task);
                // Reset input value
                    el.value = '';
               
          }  
         
          // Dislay the new list
          this.FetchAll();
        
           
      }
    }
 }
var-app=新函数(){
this.el=document.getElementById('myTasks');
this.myTasks=[“打扫浴室”、“洗碗碟”];
this.Count=函数(数据){
var el=document.getElementById('counter');
变量名称='任务';
如果(数据){
如果(数据>1){
name=‘要做的事情’;
}
el.innerHTML=数据+“”+名称;
}否则{
el.innerHTML='No'+名称;
}
};
this.FetchAll=function(){
var数据=“”;
如果(this.myTasks.length>0){
对于(i=0;i-1);
if(arrayContainsTask==true){
window.alert(“不允许重复”);
}否则{
//添加新值
this.myTasks.push(任务);
//重置输入值
el.值='';
}  
//公布新名单
this.FetchAll();
}
}
}
按原样创建HTML

您的Javascript如下所示。检查任务是否已存在于数组中时出现错误。在比较字符串值时,可以使用带三重等于的简单for循环,也可以按照我下面所附的操作

var app = new function() {
    
      this.el = document.getElementById('myTasks');
    
      this.myTasks = ['Clean the bathroom', 'Wash the dishes'];
    
      this.Count = function(data) {
        var el   = document.getElementById('counter');
        var name = 'task';
    
        if (data) {
          if (data > 1) {
            name = 'Things To DO';
          }
          el.innerHTML = data + ' ' + name ;
        } else {
          el.innerHTML = 'No ' + name;
        }
      };
      
      this.FetchAll = function() {
        var data = '';
    
        if (this.myTasks.length > 0) {
          for (i = 0; i < this.myTasks.length; i++) {
            data += '<tr>';
            data += '<td>' + this.myTasks[i] + '</td>';
            data += '<td><button onclick="app.Edit(' + i + ')">Edit</button></td>';
            data += '<td><button onclick="app.Delete(' + i + ')">Delete</button></td>';
            data += '</tr>';
          }
        }
    
        this.Count(this.myTasks.length);
        console.log(this.myTasks.length);
        return this.el.innerHTML = data;
      };
    
      this.Add = function () {
        el = document.getElementById('add-task');
        // Get the value
        var task = el.value;
        console.log(task);
        
        if (task ){ 
                        var arrayContainsTask = (this.myTasks.indexOf(task) > -1);
           
            if(arrayContainsTask == true){
                    window.alert("Duplicates not allowed.");
            }else{
                // Add the new value
                this.myTasks.push(task);
                // Reset input value
                    el.value = '';
               
          }  
         
          // Dislay the new list
          this.FetchAll();
        
           
      }
    }
 }
var-app=新函数(){
this.el=document.getElementById('myTasks');
this.myTasks=[“打扫浴室”、“洗碗碟”];
this.Count=函数(数据){
var el=do