我如何使我的计算函数也和列以及行文本框
how do i make my calculate function also sum columns as well as rows of textboxes
我试图创建一个页面,有两个文本框,用户可以选择他们想要多少行和列。然后根据文本框的需求创建一个文本框网格,其中添加了禁用文本框的列和行,以计算每行和每列的总和。这个函数对所有的行求和但是我真的很难对这些行求和。下面是到目前为止的代码:
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8">
<title></title>
<script>
function grid() {
var row = document.getElementById("rows");
var column = document.getElementById("columns");
row.value = parseInt(row.value);
column.value = parseInt(column.value);
for (var x = 0; x <= parseInt(row.value); x++) {
for (var y = 0; y <= parseInt(column.value); y++){
var br = document.createElement("br");
var box = document.createElement("input")
box.setAttribute("type", "text");
box.setAttribute("size", "5");
box.setAttribute("id", "tb" + x + y);
box.setAttribute("name", "add" + x);
box.setAttribute("value", "0");
box.style.marginRight = "3px";
box.style.marginBottom = "3px";
var output = document.createElement("input");
output.setAttribute("id", "output" + parseInt(x) + parseInt(y))
output.setAttribute("name", "result" + x);
output.setAttribute("disabled", "true");
output.setAttribute("size", "5");
output.style.marginRight = "3px";
if (x < parseInt(row.value)){
if (y < parseInt(column.value)){
document.getElementById("boxs").parentNode.appendChild(box);
}else{
document.getElementById("boxs").parentNode.appendChild(output);
document.getElementById("boxs").parentNode.appendChild(br);
}
}else{
document.getElementById("boxs").parentNode.appendChild(output);
}
}
}
//remove last box
tbid = "output" + (row.value) + (column.value);
nobox = document.getElementById(tbid);
nobox.parentNode.removeChild(nobox);
}
</script>
<script>
function calculate(){
var row = document.getElementById("rows");
var column = document.getElementById("columns");
row.value = parseInt(row.value);
column.value = parseInt(column.value);
var perform = document.getElementById("perform");
for (var x = 0; x < parseInt(row.value); x++) {
var arr = document.getElementsByName("add" + x);
var rowTotal = 0;
var colTotal = 0;
for(var y = 0 ; y < parseInt(column.value); y++){
if(parseInt(arr[y].value))
rowTotal += parseInt(arr[y].value);
}
if(perform.value == "sum"){
document.getElementById("output" + x + y).value = rowTotal;
}else if(perform.value == "mean"){
document.getElementById("output" + x + y).value = rowTotal / parseInt(row.value);
}
}
}
</script>
</head>
<body>
<div>
<div id="boxs">
</div>
<div id="matrix">
Rows<input type="text" id="rows">
Columns<input type="text" id="columns">
<button id="button" onclick="grid()">Create Grid</button><br><br>
<select id="perform">
<option value="sum">sum</option>
<option value="mean">Mean</option>
<option value="mode">Mode</option>
<option value="median">Median</option>
</select><br>
<button id="calculate" onclick="calculate()">Calculate</button><br><br>
</div>
</div>
</body>
我知道这可能很乱,但我是新手。任何帮助或指导将非常感激。
给输入一个行和列类。然后你可以用一个selector
很容易地得到输入的集合。在此之后,只需遍历集合并计算总和即可。
<input type="text" class="row1 col1" />
<input type="text" class="row1 col2" />
<input type="text" class="row2 col1" />
<input type="text" class="row2 col2" />
var row1 = document.querySelectorAll(".row1");
var row2 = document.querySelectorAll(".row2");
var col1 = document.querySelectorAll(".col1");
var col2 = document.querySelectorAll(".col2");
var sum = 0;
for (var i = 0; i < row1.length; i++) {
sum += parseInt(row1[i].value));
}
用于计算行总数。只是对列总数做了一些修改,得到行总数
for (var x = 0; x < parseInt(column.value); x++) {
var colTotal = 0;
for(var y = 0 ; y < parseInt(row.value); y++){
var arr = document.getElementsByName("add" + y);
if(parseInt(arr[x].value))
colTotal += parseInt(arr[x].value);
}
if(perform.value == "sum"){
document.getElementById("output" + y + x).value = colTotal;
}else if(perform.value == "mean"){
document.getElementById("output" + y + x).value = colTotal / parseInt(row.value);
}
}
只需在创建输入元素时为它们添加一个特定的类。之后,您可以轻松地在单个查询中选择每个输入。另外:使用jquery:)整个JS代码的计算将是这样的:
var sum = 0;
$('.classname').each(function(){
sum += $(this).val();
});
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- 高亮显示与数组字符串一起使用时文本插件中断
- 在每个字符输入后,使密码文本框值可见
- 如何使文本自动出现在HTML页面中的所有块引号之后
- HTML/JS 如何输入文本并使其显示在屏幕上
- 使用省略号截断文本,使插入符号始终位于末尾
- 文本框使链接可见,使用 if else 语句,JavaScript
- jquery:闪烁按钮文本会使按钮跳跃
- SVG中的弯曲文本会使Chrome崩溃
- 如何使用jQuery更改span内部的文本,使其他span包含的节点保持不变
- 收缩td表中的文本,使其适合大小.逐渐在调整大小列上显示文本
- 替换文档中的文本并使jQuery可点击
- 选择所有文本,使浏览器滚动到顶部
- 如何模糊文本,使其无法在网页上以编程方式读取
- 如何在JSON的开头和结尾添加文本,使其成为JSONP
- REGEX Str Replace-查找链接文本并使其成为链接
- 单击html表格单元格时,使用下拉框而不是文本框使其可编辑
- 输入类型文本即使使其可编辑也不接受值
- 如何净化用户输入文本,使其可以在Javascript/JSON中使用
- 在canvas元素中移动文本并使其居中