Javascript函数不工作

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

我的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">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()