innerHtml中的onBlur会阻止该功能
onBlur in innerHtml blocks the function
我有两个函数,一个是动态创建一个带有输入字段的表,这些字段的维度基于用户插入的变量k,另一个函数读取用户在表的每个字段中再次插入的值,并将它们插入到我可以稍后调用的二维数组中。问题是创建表函数不适用于插入其代码中的 onBlur。代码如下:
<head>
<script>
var k;
function genArray () {
var A = [];
for (var i = 0; i < k; i++) {
A[i] = [];
for (var j = 0; j < k; j++) {
var id = "A" + (i + 1) + (j + 1);
A[i][j] = parseFloat(document.getElementById(id).value);
if (isNaN (A[i][j])) {
alert ('Valoarea 'A[i][j]' nu este un numar. Reintroduceti valoarea');
}
}
}
}
function readGrad() {
k = parseInt(document.getElementById("grad").value);
if (isNaN(k)) {
alert('Gradul introdus nu este intreg, reintroduceti gradul matricii');
}
if (k == 0) {
alert ('Determinantul trebuie sa fie mai mare ca 1');
}
if (k == 1) {
alert ('Determinantul trebuie sa fie mai mare ca 1');
}
return k;
}
function genTable(i,j) {
//var i,j = parseInt(document.getElementById("grad").value);
var myTable = '<TABLE BORDER="1" BORDERCOLOR="BLACK">'n <TBODY>'n';
for (i = 0; i < 1; i++) {
myTable += ' <TR>'n';
for (j = 0; j < k+1; j++) {
myTable += ' <TD>'+j+'</TD>'n';
}
myTable += ' </TR>'n';
}
for (i = 1; i < k+1; i++) {
myTable += ' <TR>'n';
for (j = 0; j < 1; j++) {
myTable += ' <TD>'+i+'</TD>'n';
}
for (j = 1; j < k+1; j++) {
myTable += ' <TD><input class="element" id="A' + i + j + '" onblur="genArray()"></TD>'n';
}
myTable += ' </TR>'n';
}
myTable += ' </TBODY>'n</TABLE>'n';
document.getElementById('container').innerHTML = myTable;
}
</script>
</head>
<body style="background-color: #777; color: ddd;">
<div style="margin: 20px;">
<h1>Program de calculare determinant matrice de orice grad.</h1>
</div>
<div>
Introduceti gradul matricei
<input id="grad" type="text" value="" style="width: 50px;" onChange="readGrad()">
<input style="margin-top: 20px;" type="button" name="Calculate determinant" value="Generati tabel" onClick="genTable()">
</div>
<form name="Det Matrice">
<div style="margin-top: 100px; float: left; width: 100%;">
Introduceti valorile:
<table style="text-align: center;">
<div id="container"></div>
</table>
<br>
</div>
</body>
更正警报的语法错误后,genTable() 工作。但是你的代码中有逻辑问题。将 onblur 事件处理程序添加到生成的表单元格中的每个文本字段。因此,每个单元格输入都将触发对 onblur 事件处理程序的调用,该处理程序将迭代整个表。我不认为这是你想要的。此外,在迭代过程中,您的parseFloat函数将在所有空单元格上失败。你应该只触发一次对genArray()的调用,也许通过使用一个按钮。
尝试onblur="genArray()"
而不是onBlur="genArray()"
请注意,它都是小写字母!
你的代码工作正常。只需更正第 15 行中的语法错误,如 jbabey 在注释中描述的那样。
相关文章:
- 如何替换导出功能中的IIFE
- 控制器切换后匿名功能中的访问服务数据发生变化
- 本地存储功能中的图像不起作用
- 暂停和取消暂停功能中的音频
- 是否可以访问其他功能中的克隆
- 链接功能中的角度单元测试$attrs
- j查询点击功能中的点击功能
- 另一个新功能中的新功能
- 解决选项卡功能中的错误
- 如何检查悬停功能中的两个条件
- 服务功能中的AngularJS$资源
- 如何在鼠标悬停时停止设置超时功能中的动画
- 是否可以更新功能中的间隔计时器
- 一个表单中有两个提交按钮.提交功能中的事件可以知道是哪一个
- 删除此功能中的摘要选项(博客文章)
- 我可以有另一个功能中的onClick
- 使用自动完成功能中的选择来筛选列表
- URL阻止功能中的Jquery标签
- 如何访问导入模块的其他功能中的道具
- 显示切换功能中的实际图像,而不是URL文本