在Javascript中创建元素并将其添加为事件

在Javascript中创建元素并将其添加为事件,javascript,html,Javascript,Html,在Javascript中向动态创建的元素添加事件时遇到问题。代码如下: var monto=document.createElement('input'); monto.type='text'; monto.name='monto'+cantpagos; monto.id='monto'+cantpagos; if(monto.addEventListener) monto.addEventListener("blur", sumpagos, false); else if(monto.atta

在Javascript中向动态创建的元素添加事件时遇到问题。代码如下:

var monto=document.createElement('input');
monto.type='text';
monto.name='monto'+cantpagos;
monto.id='monto'+cantpagos;
if(monto.addEventListener) monto.addEventListener("blur", sumpagos, false);
else if(monto.attachEvent) monto.attachEvent("onblur", sumpagos);
document.getElementById('pagos').appendChild(monto);
但是它不工作,一旦我移除焦点,函数就不会被调用。我做错了什么?先谢谢你

编辑:这是更相关的代码:

function sumpagos()
{
   var total=0;
   for(var i=1;i<=cantpagos;i++)
   {
      total+=document.getElementById('monto'+i).value;
   }
   document.getElementById('total').innerHTML="$"+total;
}

function addpago()
{
var i = 0;
var cuota=document.createElement('select');
cuota.name="cuota"+cantpagos;
cuota.id="cuota"+cantpagos;
for(i=1;i<=3;i++)
{
   cuota.options[i-1]=new Option("Cuota "+i, i);
}
document.getElementById('pagos').appendChild(cuota);
var monto=document.createElement('input');
monto.type='text';
monto.name='monto'+cantpagos;
monto.id='monto'+cantpagos;
if(monto.addEventListener) monto.addEventListener("blur", sumpagos, false);
else if(monto.attachEvent) monto.attachEvent("onblur", sumpagos);
document.getElementById('pagos').appendChild(monto);
document.getElementById('pagos').innerHTML+="<br />";
cantpagos++;
}
函数sumpagos() { var合计=0;
对于(var i=1;i这里,这应该使它工作:

function sumpagos() {
    var total = 0,
        monto;

    for(var i=1; i <= cantpagos; i++) {
        monto = document.getElementById('monto' + i);
        if ( monto != null ) {
            total += +monto.value;
        }
    }    
    document.getElementById('total').innerHTML = '$' + total;
}

更新:

我相信这一行代码是您的问题的原因:

document.getElementById('pagos').innerHTML+="<br />";
document.getElementById('pagos').innerHTML+=“
”;
没有该行的演示:
使用该行演示:

如您所见,第一个演示有效,第二个则无效


删除该行,它应该可以工作…

。您已经排除了相关的javascript和HTML。您发布的代码没有明显的错误。patrick,我将发布受影响的框和函数。@Carlos函数
sampagos
定义了吗?
typeof sampagos
为您提供了什么?您的浏览器是否报告了错误?@Carlos奇怪的是,如果在这个演示中工作正常:我不明白这一点。它要么必须工作,要么必须抛出一个错误。这里没有第三个选项。你确定没有抛出错误吗?确定没有抛出错误,我正在检查错误控制台。每当我向函数添加警报时,它都不会显示,因此我可以肯定地说一定有一些错误函数附加到输入元素而不是函数本身时出现问题。@Carlos您必须确保在
addpago
函数中,标识符名称
sumpagos
引用了正确的函数。请尝试
console.log(sumpagos)
addpago
函数中。是否记录了正确的函数?@Carlos您在Firefox中有Firebug吗?是否安装了Chrome?我有Firebug,但没有Chrome。
var monto = document.createElement('input');
monto.type = 'text';
monto.name = monto.id = 'monto' + cantpagos;
monto.onblur = sumpagos;
document.getElementById('pagos').appendChild(monto);
document.getElementById('pagos').innerHTML+="<br />";