Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Замена значений ячеек таблицы. (https://javascript.ru/forum/events/2692-zamena-znachenijj-yacheek-tablicy.html)

madgals 02.02.2009 09:25

Замена значений ячеек таблицы.
 
Здравствуйте. есть у меня таблица. в ней есть поля "название", "цена".
Цена - в рублях. Мне нужно, чтобы при каком-то действии происходил пересчет цены в другую валюту ну и соответственный вывод цифирь в нужную ячейку.

Курс валюты тоже содержится в отдельной табличке в своей ячейке.

Zibba 02.02.2009 10:20

Блин, мало того что последнее время перестали просто вопросы задавать, а нагло просить сделать работу за них, так еще и задачу описывают методом "Сделай то не знаю что, но что бы работало!". Подробнее нельзя!? С примером таблицы и т.д.!? А то после такого описания задачи, не то что желание помочь пропадает, даже разбираться что вы хотите (да какой там разбираться, скорее гадать).

madgals 02.02.2009 11:04

чувак. куда подробнее. Есть 2 таблички. В 1й таблице в одной из ячеек есть цифра. 36.

И есть 2я таблица. Содержит много строк и несколько ячеек в каждой строке. Одна ячейка в строке содержит некое число.

Так вот. Мне нужна какаянибудь функция, чтобы по нажатии на кнопку или ссылку или еще чего происходила замена значений ячеек с числом во 2й таблице. Замена такая "ячейка 2я таблица / ячейка 1й таблицы".

Ну грубо говоря 24000/36

ZoNT 02.02.2009 11:26

Цитата:

Сообщение от madgals
Мне нужна какаянибудь функция, чтобы по нажатии на кнопку или ссылку или еще чего происходила замена значений ячеек с числом во 2й таблице.

Нужна - реализуй. Будут затыки - выкладывай код - поможем исправить ошибки.

madgals 02.02.2009 11:34

В общем вот пример
<table id="t">
    <tr><td>Текст</td><td>Текст</td><td>2890</td></tr>
    <tr><td>Текст</td><td>Текст</td><td>545</td></tr>
    <tr><td>Текст</td><td>Текст</td><td>4545</td></tr>
    <tr><td>Текст</td><td>Текст</td><td>4575</td></tr>
</table>

table.rows[0].cols[2].innerHTML=2890/28;
table.rows[1].cols[2].innerHTML=545/28;
table.rows[2].cols[2].innerHTML=4545/28;
table.rows[3].cols[2].innerHTML=4575/28;


Только этих td гораздо больше.
И каждое значение мне нужно помножить, скажем, на 28 и вывести уже обновленную ячейку.

Я так понимаю нужен цикл, но плохое знание javascript не позволяет мне просто так это реализовать.

мне нужно во первых узнать общее количество этих td, в которых содержатся числа, во вторых в цикле выполнить простую операцию деления и в конце чтобы вывелись обновленные значения.

madgals 02.02.2009 11:35

забыл
var table=document.getElementById("t");

Zibba 02.02.2009 11:39

Ну тогда как то вот так:

function operation(){
	var td1 = document.getElementById('table1').getElementsByTagName('td');
	var tr2 = document.getElementById('table2').getElementsByTagName('tr');
				
	var i = 0;				
	while(i < tr2.length){
		var td2 = tr2[i].getElementsByTagName('td');
		var value = parseFloat(td2[2].innerHTML) / parseFloat(td1[1].innerHTML)
		td2[2].innerHTML = value;
		i++;
	}				
}


<table id='table1' border="1">
	<tr>
		<td>какие то данные</td>
		<td>36</td>
		<td>какие то данные</td>
	</tr>
</table>
<br>
<table id='table2' border="1">
	<tr>
		<td>какие то данные</td>
		<td>какие то данные</td>
		<td>24000</td>
	</tr>
	<tr>
		<td>какие то данные</td>
		<td>какие то данные</td>
		<td>24000</td>
	</tr>
	<tr>
		<td>какие то данные</td>
		<td>какие то данные</td>
		<td>24000</td>
	</tr>
</table>
<br>
<span style="color:#99cc33" onclick="operation()">Замена</span>


Дальше уже додумаете или переделаете под свои нужды. Но идея примерно такая.

ZoNT 02.02.2009 11:45

уже помогли... не успел :)

madgals 02.02.2009 11:58

благодарю )

madgals 02.02.2009 15:05

что то я не пойму. с вашим вариантом все понятно. Я даже понял как он работает. Но вот сюда никак не могу перенести:
<script type="text/javascript">
function operation(){
    var td1 = document.getElementById('table1').getElementsByTagName('td');
    var tr2 = document.getElementById('color').getElementsByTagName('tr');
 
    var i = 0;                
    while(i < tr2.length){
        var td2 = tr2[i].getElementsByTagName('td');
        var value = parseFloat(td2[3].innerHTML) / parseFloat(td1[1].innerHTML)
        td2[3].innerHTML = value;
        i++;
    }                
}
</script>
</head>

<body>

<table id='table1' border="1">
    <tr>
        <td>какие то данные</td>
        <td>36</td>
        <td>какие то данные</td>
    </tr>
</table>
<br />
<table width='100%' id='color' border=0>    <tr><th>артикул</th> 
    <th>Наименование <a href=/pricelist/catalog.php?n_cat=314&o=1&b=1&back=1> 
        </th> 
    <th>&nbsp;</th> 
    <th>Цена</th><th>&nbsp;</th></tr><tr onmouseover="this.style.cursor='hand';"><td width='10%' align='center'><span class='font'>GEH-NX-CAL.BS</span>&nbsp;</td><td width='80%'>Корпус ATX  JET Computer Calypso (игровой/без блока/боковое окно /12cm вент/2usb/2audio/firewire) Black/Metall</td><td width='2%'>&nbsp;</td>
      <td width='14%' align='center'>4409.52</td> 
                    <td><a href=where.php?n=38431&n_cat=314&back=1><img src="images/AideSZ_0001.png" alt="Где?" border="0" /></a></td> 
              </tr><tr onmouseover="this.style.cursor='hand';"><td width='10%' align='center'><span class='font'>GEH-JCP-SPIDER.</span>&nbsp;</td><td width='80%'>Корпус ATX  JET Computer Spider (с термосенсором/без блока/боковое окно /12cm воздузовод) Black</td><td width='2%'>&nbsp;</td>
                <td width='14%' align='center'>3492.34</td> 
                    <td><a href=where.php?n=38427&n_cat=314&back=1><img src="images/AideSZ_0001.png" alt="Где?" border="0" /></a></td> 
              </tr><tr onmouseover="this.style.cursor='hand';"><td width='10%' align='center'><span class='font'> </span>&nbsp;</td><td width='80%'>Корпус ATX AOpen G528 Black-Silver 450W (USB,card reade, audio, 1394)</td><td width='2%'>&nbsp;</td>
                <td width='14%' align='center'>3393.38</td> 
                    <td><a href=where.php?n=38985&n_cat=314&back=1><img src="images/AideSZ_0001.png" alt="Где?" border="0" /></a></td> 
              </tr><tr onmouseover="this.style.cursor='hand';"><td width='10%' align='center'><span class='font'></span>&nbsp;</td><td width='80%'>Корпус ATX AOpen QF50C Silver-Black 350W P4</td><td width='2%'>&nbsp;</td>
                <td width='14%' align='center'>1656.73</td> 
                    <td><a href=where.php?n=34055&n_cat=314&back=1><img src="images/AideSZ_0001.png" alt="Где?" border="0" /></a></td> 
              </tr><tr onmouseover="this.style.cursor='hand';"><td width='10%' align='center'><span class='font'>DA-01WD-D</span>&nbsp;</td><td width='80%'>Корпус ATX Chieftec DA-01WD-D White 400W (с дверцей)</td><td width='2%'>&nbsp;</td>
                <td width='14%' align='center'>2849.87</td> 
                    <td><a href=where.php?n=29594&n_cat=314&back=1><img src="images/AideSZ_0001.png" alt="Где?" border="0" /></a></td> 
              </tr><tr onmouseover="this.style.cursor='hand';"><td width='10%' align='center'><span class='font'> </span>&nbsp;</td><td width='80%'>Корпус ATX Gigabyte GZ-AA3CB-SJB Poseidon 310 Black (без БП, 2xUSB)</td><td width='2%'>&nbsp;</td>
                <td width='14%' align='center'>3443.58</td> 
                    <td><a href=where.php?n=37939&n_cat=314&back=1><img src="images/AideSZ_0001.png" alt="Где?" border="0" /></a></td> 
              </tr><tr onmouseover="this.style.cursor='hand';"><td width='10%' align='center'><span class='font'>75917</span>&nbsp;</td><td width='80%'>Корпус ATX Gigabyte GZ-AX1CA-SDB Triton 180 Black w/o PSU </td><td width='2%'>&nbsp;</td>
                <td width='14%' align='center'>2909.69</td> 
                    <td><a href=where.php?n=32598&n_cat=314&back=1><img src="images/AideSZ_0001.png" alt="Где?" border="0" /></a></td> 
              </tr></table>
              <span style="color:#99cc33" onclick="operation()">Замена</span>
</body>
</html>

может я чего то не понимаю ???


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