gpt4 book ai didi

Javascript 事件似乎没有添加到动态生成的文本框中

转载 作者:行者123 更新时间:2023-11-29 22:41:40 25 4
gpt4 key购买 nike

我在 javascript 中为动态添加的文本框添加了 onkeyup javascript……但它似乎不起作用……

var cell4 = row.insertCell(3);
cell4.setAttribute('align','center')
var e3 = document.createElement('input');
e3.type = 'text';
e3.name = 'txtqt' + iteration;
e3.id = 'txtqt' + iteration;
e3.onkeyup = totalAmount(event,this,'tblsample');//Adding this lines doesnt work
e3.size = 10;
cell4.appendChild(e3);

但是当我使用

e3.onkeyup = totalAmount;

有效...这是我的 javascript 函数,

函数 totalAmount(e,obj,tblid){

var tbl = document.getElementById(tblid);
//alert(tbl);
var tblRows = tbl.rows.length;
//alert(tblRows);
var result =0;

var str1;
if (obj != null) {
str1 = obj.id;
} else {
str1 = this.id;
}
var lastChar = str1.substring(5,str1.length);
//alert(lastChar);

if(str1=='txtqt'+lastChar)
{
var str2 = 'txtup'+lastChar;
var str3 = 'txtAmount'+lastChar;
var txtDeduct = document.getElementById(str1).value;
var txtAmt = document.getElementById(str2).value;
var txtTotal = document.getElementById(str3);
var totRes = txtAmt*txtDeduct;
//var res = formatNumber(totRes,2)
txtTotal.value = totRes.toFixed(2)
document.getElementById('txttotAmount').value = totRes.toFixed(2);


for(i=1;i<=tblRows;i++)
{
//alert(tblRows);
txtTotID = 'txtAmount'+i;
if(document.getElementById(txtTotID).value!='')
{

result =parseFloat(result) + parseFloat(document.getElementById(txtTotID).value);

//var res= formatNumber(result,2)
document.getElementById('txtTotalAmount').value = result.toFixed(2);
document.getElementById('txttotAmount').value = result.toFixed(2);
//document.getElementById('txtTotalAmount').value = result;
}

}

}

最佳答案

您需要将函数调用包装在匿名函数中:

e3.onkeyup = function(event){ totalAmount(event,this,'tblsample'); }

但为了实现跨浏览器兼容性,更好的方法是使用 addEvent 函数:

function addEvent(obj,type,fn){
if (obj.addEventListener){
obj.addEventListener(type,fn,false);
} else if(obj.attachEvent){
obj["e"+type+fn]=fn;
obj[type+fn]=function(){
obj["e"+type+fn](window.event);
};
obj.attachEvent("on"+type,obj[type+fn]);
};
};

然后使用该函数添加事件:

addEvent(e3,'keyup',function(event){ totalAmount(event,this,'tblsample'); });

只是一种更好的处理事件的方法。我建议您改用这种方法。

关于Javascript 事件似乎没有添加到动态生成的文本框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2333881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com