У меня есть текстовое поле для ввода значений, которые представляют собой строки и столбцы (но не таблицу), и я хочу иметь возможность добавлять значения строк по отдельности. Моя логика заключается в том, что я заставляю пользователя вводить количество введенных им строк, делю ввод, чтобы создать строку, а затем делю ее на количество вводимых строк. Вот что у меня есть. Рад за лучшие решения. Поочередно я немного почитал и подумал, что могу преобразовать строки в фактические <tr>
с и затем просмотреть их (я также хотел бы иметь возможность сделать это для столбцов на более позднем этапе). Заранее спасибо:
<html>
<head>
<script type='text/javascript'>
function sum(){
var rows= document.getElementById('rows').value;
var val = document.getElementById('userInput').value;
var temp = val.split(" ");
var lines=temp.split(rows);
var total = 0;
var v;
for(var i = 0; i < temp.length; i++) {
v = parseFloat(lines[i]);
//this is what I am missing to get each row's sum separately
}
document.write(//each row total);
}
</script>
</head>
<body>
<form id="input">
<textarea id="userInput"></textarea>
Number of rows: <textarea id="rows"></textarea>
<input id="Run" type=Button value="run" onClick="sum()" />
</form>
</body>
</html>
Итак, теперь у меня есть следующее (мне пришлось добавить v обратно), но оно возвращает NaN (и в любом случае я обращаюсь к последнему предложению):
<script type='text/javascript'>
function sum() {
var grandTotal = 0,
rowTotals = [], // array to hold individual row totals
rowData,
rows,
val,
var v;
rawData = document.getElementById('userInput').value;
rows = rawData.split("\n");
for (var i=0; i < rows.length; i++) {
rowTotals[i] = 0;
rowData = rows[i].split(" ");
for (var j=0; j < rowData.length; j++) {
val = parseFloat(rowData[j]);
if (!isNaN(v)) rowTotals[i] += v;
}
alert("Total for row " + (i + 1) + ": " + rowTotals[i]);
grandTotal += rowTotals[i];
}
alert("Grand total: " + grandTotal);
}
</script>