对于新建的元素,onchange函数只调用一次

onchange function is called only once for newly create element

本文关键字:调用 函数 一次 onchange 元素 于新建 新建      更新时间:2024-02-23

函数创建一个元素并将其附加到父元素。有问题的元素包含其他元素,其中有一个输入复选框。我为onchange事件添加了一个事件侦听器。为了简洁起见,侦听器只向控制台写入"here"。第一次加载页面时,"here"消息出现,这是有意义的,因为checked属性设置为true。问题是,在此之后的任何单击都不会触发侦听器。有人能阐明这一点吗?

    function createNewRow(number){
        var row=document.createElement('div');
        automaticLegend.appendChild(row);
        var txt=document.createTextNode('Particle '+number);
        var showBtn=document.createElement('input');
        showBtn.type='checkbox';
        showBtn.checked=true;
        var labelShow=document.createTextNode('Show ');
        var traceBtn=document.createElement('input');
        traceBtn.type='checkbox';
        traceBtn.checked=true;
        var labelTrace=document.createTextNode('Trace ');
        var radiusBtn=document.createElement('input');
        radiusBtn.type='checkbox';
        radiusBtn.checked=true;
        var labelRadius=document.createTextNode('Radius ');
        var delBtn=document.createElement('input');
        delBtn.type='button';
        delBtn.value='Remove';
        row.appendChild(txt);
        row.appendChild(showBtn);
        row.appendChild(labelShow)
        row.appendChild(traceBtn);
        row.appendChild(labelTrace);
        row.appendChild(radiusBtn);
        row.appendChild(labelRadius);
        row.appendChild(delBtn);
        showBtn.onchange=resetShowFlag(showBtn);
};
function resetShowFlag(el){
    console.log('here');
}

尝试使用这个。showBtn.addEventListener('change',resetShowFlag);