我创建了一个事件,以便可以在事件发生时添加侦听器。会有多种情况触发该事件,因此将跟踪是什么触发了该事件并进行适当处理。但是,我尝试在一个循环内发生的函数中添加dispatchEvent,并且收到InvalidState错误。任何人都在乎解释什么原因导致此错误以及为什么在这里发生。您可以在下面看到我的代码

//create event
var event = new Event('tableRowAdded');

//get element reference
var table = document.getElementById('dataTable');

//set model
var model = [{jsonData},{jsonData},{jsonData}];

//validate model and then start creating table
function addRowsToTable(DOMTable, rowData){
    //stop execution if rowdata null
    if(rowData == null || DOMTable == null){
        return;
    }

    var currentRowCount = DOMTable.rows.length;

    //add empty row to table
    var tr = DOMTable.insertRow(currentRowCount);
    tr.id = "data_row_" + currentRowCount;

    //add columns to table
    //first cell is used for error data
    var td = tr.insertCell(0);

    //traineeCode
    td = tr.insertCell(1);
    td.innerHTML = rowData.TRAINEE_CODE; //this is one of the json keys within the json data
}

function populateTableFromJSON(){
    var count = model.length;

    //loop over json array to populate table
    for(i = 0; i < count; i++){
        addRowsToTable(table, model[i]);
        //dispatch event occured
        table.dispatchEvent(event);
    }
}


这是收到的错误


  未捕获的InvalidStateError:无法在'EventTarget'上执行'dispatchEvent':该事件已被调度。

最佳答案

大概您需要更改:

table.dispatchEvent(event);




table.dispatchEvent(new Event('tableRowAdded'));

关于javascript - JavaScript中的DispatchEvent for循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34052453/

10-16 16:10