对JavaScript中的html列求和,然后在警报框中显示
首先:我是一个网络开发的noob。 我的问题是:我已经用HTML制作了一个页面,其中有一个带有输入字段的表格,在用户写下一些数字后,他们应该能够单击按钮,在警报框中看到一列的总和,旁边有一些文本。目前,警报框显示的是文本,但不是总和,而是“未定义”。下面是JS代码。告诉我是否也应该发布HTML部分对JavaScript中的html列求和,然后在警报框中显示,javascript,html,Javascript,Html,首先:我是一个网络开发的noob。 我的问题是:我已经用HTML制作了一个页面,其中有一个带有输入字段的表格,在用户写下一些数字后,他们应该能够单击按钮,在警报框中看到一列的总和,旁边有一些文本。目前,警报框显示的是文本,但不是总和,而是“未定义”。下面是JS代码。告诉我是否也应该发布HTML部分 沃特冈 沃特冈 Vakcode ECTS 基准行为 贝雷肯研究中心 Naam:Gergo Tamas Telefoon:0631947009 电子邮件:gergo。tamas@student.h
沃特冈
沃特冈
Vakcode
ECTS
基准行为
贝雷肯研究中心
Naam:Gergo Tamas
Telefoon:0631947009
电子邮件:gergo。tamas@student.hu.nl
戈塔马斯
Deze opdracht是het kader van het vak分析和用户界面中的gemaakt
编剧:Gergo Tamas
基准日期:13-02-2019
函数计算(){
var table=document.getElementById('table');
var items=table.getElementsByTagName('input');
var总和=0;
对于(var i=0;i将返回和;
添加到计算()
,并将total=Calculate.output;
更改为total=Calculate();
现在它显示为未定义,因为您无法访问Calculate函数中的输出变量
按提供的完整代码进行编辑
现在我看到了几个问题:
1) 您正在执行var table=document.getElementById('table');
,它选择具有id=table
的元素,但是在html中将其设置为class=“table”
。若要解决此问题,请将html从类更改为id,或者使用let table=document.getElementsByClassName('table')[0]
以检索元素
2) 您试图将sum
存储在id=sum
的元素中,但html中不存在此类元素
3) 计算总和时,您在每个字段(varkode、ects和date)上循环,这些字段并非都是数字字段。计算函数不返回总和。您试图读取错误的输出。请尝试以下操作:
<script type="text/javascript">
function Calculate() {
var table = document.getElementById('table');
var items = table.getElementsByTagName('input');
var sum = 0;
for(var i=0; i<items.length; i++)
sum += parseInt(items[i].value);
var output = document.getElementById('sum');
output.innerHTML = sum;
return sum;
}
function popUp() {
total = Calculate();
alert("Je hebt to nu toe " + total + "ECTS behaald." );
}
</script>
函数计算(){
var table=document.getElementById('table');
var items=table.getElementsByTagName('input');
var总和=0;
对于(var i=0;i
在popUp()中,您没有调用Calculate(),而是调用了Calculate.output。这意味着它返回一个未定义的
在Calculate()中,您没有返回值,但尝试将sum值放入元素中。我认为,根据我在本文中的理解,您也需要返回sum
所以我认为代码可能是:
<script type="text/javascript">
function Calculate() {
var table = document.getElementById('table');
var items = table.getElementsByTagName('input');
var sum = 0;
for(var i=0; i<items.length; i++)
sum += parseInt(items[i].value);
var output = document.getElementById('sum');
output.innerHTML = sum;
return sum;
}
function popUp() {
total = Calculate();
alert("Je hebt to nu toe " + total + "ECTS behaald." );
}
</script>
函数计算(){
var table=document.getElementById('table');
var items=table.getElementsByTagName('input');
var总和=0;
对于(var i=0;i
Vakcode
ECTS
基准行为
贝雷肯研究中心
总数为:
函数计算(){
var table=document.getElementById('table');
var items=table.getElementsByTagName('input');
var总和=0;
对于(变量i=0;i
您需要从Calculate()
返回一个值,因此在return sum;
中再添加一行;
或者您需要将Calculate
的属性命名为output
。添加HTML会有所帮助。我添加了完整的代码。我想您在计算总和时忘了检查元素的类型。如果您是指我编写的“document.getElementById('table');”同时它是一个类,那么你是对的,我刚刚更改了它。但是现在我有另一个错误,说“Uncaught ReferenceError:popUp未在htmlButtoneElement.onclick(voortgangpagina.html:64)定义)“谢谢,我以前试过,现在也试过了。当我这样做时,警报框不再出现。是的,它显示“Uncaught TypeError:无法读取null的'getElementsByTagName'属性”这意味着table
为null
。如果没有剩余的代码,很难说得更多。谢谢,我刚刚用完整的代码更新了问题。也谢谢,但正如我告诉前面的帮助者的那样,如果我这样做,aler框出于某种原因不会显示。您的表是否有id=“table”?请发布您的html代码。我很高兴它对您有所帮助。:)