Javascript函数不工作
我的jsp页面包含一个表,其代码如下所示:Javascript函数不工作,javascript,jsp,Javascript,Jsp,我的jsp页面包含一个表,其代码如下所示: <table width="400" border="1" cellpadding="0" cellspacing="1" id="student_table"> <thead> <tr> <th scope="row">ID</th> <th scope="row">Name</th> <th scope="row">Count
<table width="400" border="1" cellpadding="0" cellspacing="1" id="student_table">
<thead>
<tr>
<th scope="row">ID</th>
<th scope="row">Name</th>
<th scope="row">Country</th>
<th scope="row">Marks</th>
<th scope="row">Rank</th>
</tr>
身份证件
名称
国家
标志
等级
1.
史密斯
美国
20
2.
约翰
英格兰
29
3.
威廉
澳大利亚
33
4.
迈克尔
德国
29
我有一个javascript函数,它比较两个单元格中的值。但是javascript函数不起作用。我不知道为什么。请任何人帮我解决问题。我知道还有其他验证方法。但我需要这样做。这是一个大项目的例子,我需要以这种方式完成。请帮忙
function myfunction11(){
var myTable = document.getElementById('student_table').tBodies[0];
// first loop for each row
for (var r=0, n = myTable.rows.length; r < n; r++) {
// this loop is getting each colomn/cells
for (var c = 0, m = myTable.rows[r].cells.length; c < m; c++) {
if(myTable.rows[r].cells[c].childNodes[0].value){
var rank = myTable.rows[r].cells[4].innerText;
var marks = myTable.rows[r].cells[c].childNodes[0].value;
if(rank>marks){
alert("rank cannot be greater than marks:"+marks);
myTable.rows[r].cells[c].childNodes[0].value="0";
return false;
}
}
}
}
return true;
}
函数myfunction11(){
var myTable=document.getElementById('student_table').tBodies[0];
//每行的第一个循环
for(var r=0,n=myTable.rows.length;r分数){
警告(“等级不能大于分数:+分数”);
myTable.rows[r].cells[c].childNodes[0].value=“0”;
返回false;
}
}
}
}
返回true;
}
在HTML中,您有:
onblur="return(myFunction1())
但实际函数的名称是:
myfunction11()
一旦名称匹配,函数就会运行。但是,您的代码确实有一个(至少)问题。您正在比较rank>marks
,但是marks
来自一个输入字段。所有HTML数据都是字符串,因此必须将该字符串转换为数字才能对其进行任何类型的数学运算。另外,innerText
是非标准代码,请改用textContent
。请参阅代码中的注释
函数myFunction1(){
var myTable=document.getElementById('student_table').tBodies[0];
//每行的第一个循环
for(var r=0,n=myTable.rows.length;r分数){
警告(“等级不能大于分数:+分数”);
myTable.rows[r].cells[c].childNodes[0].value=“0”;
返回false;
}
}
}
}
返回true;
}
身份证件
名称
国家
标志
等级
1.
史密斯
美国
20
2.
约翰
英格兰
29
3.
威廉
澳大利亚
33
4.
迈克尔
德国
29
尝试将onblur=“return(myFunction1())”更改为onblur=“return(myFunction11())”
真的吗?你的代码突然缩进了20个字符,这完全是没有原因的。你可以在这段代码中看到它的工作原理。您在名称myfunction11中有两处错误。一旦你把它们都修好,它就会像我所展示的那样工作。哦,sry。这是个错误。我把它改成了myfunction11()。即使这样,它也不起作用(@Leeza你试过我在这里发布的代码吗?你可以看到,一旦函数名匹配,它就可以工作。如果它仍然不适合你,那么你在其他地方还有一个问题。你的开发人员控制台显示了什么?它可以工作吗?在代码段中运行时。我只是获取表。但是onblur函数不是working@Leeza 确实如此。一旦您从澳大利亚字段中签出并通过德国字段,德国的90
将突出显示。如果您在美国字段中键入100
,并按tab键3次(导致澳大利亚字段的模糊事件触发),您将收到一条错误消息,说明不允许使用100。它正在工作。
myfunction11()