Javascript innerHtml中的onBlur会阻止该函数
我有两个函数,一个是动态创建一个带有输入字段的表,其维度基于用户插入的变量k,另一个是读取用户在表的每个字段中再次插入的值,并将其插入到我以后可以调用的二维数组中。 问题是create table函数无法在其代码中插入onBlur。 代码如下:Javascript innerHtml中的onBlur会阻止该函数,javascript,Javascript,我有两个函数,一个是动态创建一个带有输入字段的表,其维度基于用户插入的变量k,另一个是读取用户在表的每个字段中再次插入的值,并将其插入到我以后可以调用的二维数组中。 问题是create table函数无法在其代码中插入onBlur。 代码如下: <head> <script> var k; function genArray () { var A = [];
<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>
var-k;
函数genArray(){
var A=[];
对于(变量i=0;i
尝试onblur=“genArray()”
而不是onblur=“genArray()”
请注意,它都是小写字母 您的代码运行良好。只需更正第15行中的语法错误,如jbabey在注释中所述。更正警报的语法错误后,genTable()即可工作。但代码中存在逻辑问题。将onblur事件处理程序添加到生成的表格单元格中的每个文本字段中。因此,每个单元格输入都将触发对onblur事件处理程序的调用,该处理程序将迭代整个表。我认为这不是你想要的。此外,在迭代过程中,parseFloat函数将在所有空单元格上失败。您应该只使用一个按钮触发对genArray()的一个调用。看起来像MIB2,因为我看不到
k
。jslint验证代码,k由用户定义并由另一个函数读取。如果我删除onBlur=“genArray()”您的一个警报中有语法错误,则会生成该表:'Valoarea'a[I][j]'…
应该是'Valoarea'+a[I][j]+…
我已经在@jbabey为您和其他人设置了一个测试小提琴:您的小提琴不工作。什么不工作?你为什么不能更具体一点?你认为我们是变态的通灵者吗?根据你的要求,我已经添加了html代码。当点击“Generati tabel”时,不会发生任何事情。@viktor:函数“genArray()”在代码中被调用。这对我有用!在你的genArray()中放一个警报以确定。是的,你是对的,但是我希望不用按钮就可以这样做。其思想是在插入值后立即检查每个字段。我认为最好的解决方案是用值0初始化所有字段。@viktor:在这种情况下,只需检查刚刚插入的字段并更新数组,而不必检查整个表。