Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   умножить таблицу на число (https://javascript.ru/forum/dom-window/30169-umnozhit-tablicu-na-chislo.html)

alexvb 26.07.2012 16:37

умножить таблицу на число
 
Господа, прошу помощи. Есть форма:

<form action=" " method="post">
<input type="text" name="rashod" id="rashod" size="6" align="center">
</form>

и есть таблица

<table border="1" width="100%">
<tr>
<td> a x b , мм </td>
<script type="text/javascript">
for (k=50; k<=1000; k=k+50)
document.write("<td>"+String(k)+"</td>");
</script>
</tr>
<script type="text/javascript">

for (i=50; i<=1000; i=i+50)
{
document.write("<tr>");
document.write("<td>"+String(i)+"</td>");

for (j=50; j<=1000; j=j+50)
{
var v=(i*j).toFixed(1);
document.write("<td>"+String(v)+"</td>");
}
document.write("</tr>");
}
</script>
</table>

Следующим скриптом получаю данные из формы

<script>
$(document).ready(function() {
function speed2 () {
var rashod = $("#rashod").val();
var speed2 = rashod;
$(".speed2").text(speed2);

};

$("#rashod").keyup(speed2);
});
</script>

при домножении на переменную rashod таблица вообще не выодится.
Необходимо всю таблицу перемножить на вводимое число в форме.
Заранее благодарю.

bes 26.07.2012 16:59

<form action=" " method="post">
<input id="inp" type="text" name="rashod" size="6" align="center">
</form>	

и есть таблица

<table id="table" border="1" width="100%">
<tr>
<td> a x b , мм </td>
<script type="text/javascript">
for (k=50; k<=1000; k=k+50) 
document.write("<td>"+String(k)+"</td>");
</script> 
</tr>
<script type="text/javascript"> 

for (i=50; i<=1000; i=i+50)
{ 
document.write("<tr>"); 
document.write("<td>"+String(i)+"</td>");

for (j=50; j<=1000; j=j+50) 
{ 
var v=(i*j).toFixed(1);
document.write("<td>"+String(v)+"</td>"); 
}
document.write("</tr>"); 
} 
</script> 
</table>



<script>
window.onload = function () {
  var table = document.getElementById('table');
  var inp = document.getElementById('inp');
  var tr = table.rows;
  var len = tr.length;
  var td, tdLen;

  inp.onkeyup = function () {
    if (isNaN(inp.value) == false && inp.value != '') {
      for (var i = 1; i < len; i++) {//i = 0
        td = tr[i].cells;
        tdLen = td.length;
        for (var j = 1; j < tdLen; j++) {//j = 0
          //if (i == 0 && j == 0) continue;
          td[j].innerHTML = parseFloat(td[j].innerHTML) * parseFloat(inp.value);
        }
      }
    }
  }

}
</script>

devote 26.07.2012 17:36

<table> * number

bes 26.07.2012 17:48

Цитата:

Сообщение от devote
<table> * number

devote, есть какой-то быстрый способ умножить все ячейки таблицы на число, не пойму как им воспользоваться?

alexvb 26.07.2012 19:11

devote! Огромнейшее спасибо!!!

bes 26.07.2012 19:33

Может кто поделится способом или это прикол такой :)

alexvb 26.07.2012 20:36

Я извиняюсь, не того отблагодарил. Вам огромнейшее спасибо bes!!! Ваш пример работает. Вот только не могу понять что происходит: к примеру вводишь трехзначное число, таблица пересчиталась, но если стирать по одной цифре то таблица и дальше продолжает пересчитываться на увеличение

bes 26.07.2012 20:52

Исходное-то значение перезаписывается и каждый раз умножается на то, которое осталось в ячейке (что просили, то и получили), варианты решения есть, только не понятно, зачем вообще всё это нужно (формулы перемножения у вас не рабочие (точнее один раз срабатывают при выводе), document.write зачем используете тоже не понятно), объясните, там посмотрим.

alexvb 26.07.2012 21:03

Задача такая: есть таблица от 50 до 1000 с шагом 50 по горизонтали и вертикали. Есть форма ввода числа. Нужно чтобы при вводе (изменении) числа в форме, таблица пересчитывалась относительно этого числа. Поясняю: в таблице считается площадь (а х b), вводим число - получаем объем. С несколькими числами у меня получается, а вот с таблицей никак. Вот мой пример http://helpeng.ru/programs/water.php Пытаюсь сделать такой вариант, только с таблицей. Изначально выложил свое видение, но не получается определить переменную из формы в скрипте формирования таблицы. Спасибо за участие.

bes 26.07.2012 21:48

<style>
	table, td {
		border: solid 1px;
		text-align: center;
		white-space: nowrap;
	}
</style>

<input id="inp">
<div id="div"></div>

<script>
window.onload = function () {
	var num = 20;
	
	var str = '<table id="table"><tr><td>a x b, mm</td>';

	for (var i = 1; i <= num; i++) {
		str += '<td>' + i*50 + '</td>';
	}
	str += '</tr>';


	for (i = 1; i <= num; i++) {
		str += '<tr>';
		for (var j = 0; j <= num; j++) {
			if (j == 0) {
				str += '<td>' + i*50 + '</td>';
			} else {
				str += '<td>' + i * 50 * j * 50 + '</td>';
			}
		}
		str += '</tr>' 
	}
	str += '</table>';
	
	document.getElementById('div').innerHTML = str;


	var table = document.getElementById('table');
	var inp = document.getElementById('inp');
	var tr = table.rows;
	var len = tr.length;
	var td, tdLen;
	var value;

	function calculate() {
		if (isNaN(inp.value) == false && inp.value != '') {
			value = parseFloat(inp.value);
		} else {
			value = 1;
		}
		for (var i = 1; i < len; i++) {
			td = tr[i].cells;
			tdLen = td.length;
			for (var j = 1; j < tdLen; j++) {
				td[j].innerHTML = i * 50 * j * 50 * value;
			}
		}
	}


	 inp.onkeyup = function () {
		calculate()
	}

}
</script>


Часовой пояс GMT +3, время: 04:52.