开发者问题收集

JS 创建的按钮在稍后访问时未定义

2017-05-06
349

我有一个脚本,每5秒钟在表中制作一个按钮。 我最初使用 onClick 属性的按钮,该属性在脚本中称为函数。但是,这给了我一个错误,说该功能不存在,而且从我在这里看到的内容,它已经得到了回答,但我不知道在我的情况下如何解决它。我切换了它,以使JavaScript搬运按钮单击。我将属性添加到按钮标签中以在调用 btnteamListaction 函数时获取。控制台打印以下内容,

639133909

js spippets:

560708459

我已经尝试为此错误浏览此表单以获取此错误和已经找到了许多相关问题,但没有针对此特定情况,而JS本身正在创建的按钮。 请询问您是否需要完整的脚本或HTML,谢谢!

2个回答
function appendTeamTable(id,name,finished){
    var finished_txt;
    var action_content= document.createElement("a");
    var btn = document.createElement("button");
    btn.setAttribute("id","teams-list-action");
    btn.setAttribute("data-team-id",id);

    if(finished == 1){
      finished_txt = "Yes";
      var t = document.createTextNode("Retime");
      btn.setAttribute("data-is-redo","1");
    }
    else {
      finished_txt = "No";
      var t = document.createTextNode("Time");
      btn.setAttribute("data-is-redo","0");

    }

    btn.appendChild(t);
    btn.addEventListener("click",function(){
      var id = this.getAttribute("data-team-id");
      var isRedo = this.getAttribute("data-is-redo");
      teamListSelect(id,isRedo);
    });
    action_content.appendChild(btn);
    var tr = document.createElement('tr');
    var td = document.createElement('td');
    td.appendChild(action_content);
    tr.innerHTML ='<td>'+ id +'</td><td>'+ name +'</td><td>'+ finished_txt +'</td>'
    tr.appendChild(td);
    teamTable.appendChild(tr);}
Souhail Ben Slimene
2017-05-06

我查看了 此处 的帖子,并采用了第二个答案中的想法,将事件处理程序放在表格本身上,而不是单独放在按钮上。现在它运行得很好。感谢你们三人尝试查看我严重混乱的代码!:)

Jacob Jewett
2017-05-07