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>

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

madgals 02.02.2009 15:43

Фига се! Убрал <th> из таблицы и заработало. странно как то
народ. помогите, ну правда, очень надо.

Zibba 02.02.2009 17:05

Дело в том что для разметки шапки вы испольуете тег <th>, поэтому в массиве tr2 в нулевой позиции содержится его содержимое, в итоге поиск по тегу 'td' в tr2[0] дает провал, вот скрипт и не работает выкидывая ошибку. Это легко можно изменить если исправить начальное значение индекса i с 0 на 1.
var i = 1;


Еще можете при выводе значения в поле (строчка):
td2[3].innerHTML = value

вызвать метод toFixed() у значения value (а то как то не красиво смотрится работа скрипта :/ ), тогда получится вот так:
td2[3].innerHTML = value.toFixed(2);

madgals 02.02.2009 17:17

спасибо. попробую )

madgals 03.02.2009 11:29

Сделал в итоге вот так.
<script type="text/javascript">
function zamena(){
	var kurs = document.getElementById('kurs').innerHTML;
	var tr = document.getElementById('color').getElementsByTagName('tr');
    var i = 1;                
    while(i < tr.length){
        var td = tr[i].getElementsByTagName('td');
        var value = parseFloat(td[3].innerHTML) / parseFloat(kurs);
        td[3].innerHTML = value.toFixed(2);
        i++;
    }
}
</script>

<table><tr> 
				<td align="center" nowrap valign="middle"><input name="in_rub" type="checkbox" id="in_rub" onclick="zamena()" /></td> 
				<td align="center" nowrap valign="middle">Показать цену в у.е.</td> 
		</tr></table>

В итоге, каждый раз когда нажимаю на чекбокс происходит деление.
А как сделать так чтобы по отжатию все возвращалось на прежние значения ?

madgals 03.02.2009 12:16

Сделал так
function zamena(){
	var kurs = document.getElementById('kurs').innerHTML;
	var tr = document.getElementById('color').getElementsByTagName('tr');
    var i = 1;
	if (document.getElementById("in_rub").checked==true) {
    	while(i < tr.length){
        	var td = tr[i].getElementsByTagName('td');
        	var value = parseFloat(td[3].innerHTML) / parseFloat(kurs);
        	td[3].innerHTML = value.toFixed(2);
        	i++;
    	}
	}
	if (document.getElementById("in_rub").checked==false) {
    	while(i < tr.length){
        	var td = tr[i].getElementsByTagName('td');
        	var value = parseFloat(td[3].innerHTML) * parseFloat(kurs);
        	td[3].innerHTML = value.toFixed(2);
        	i++;
    	}
	}
}

Но вероятнее всего, что это неправильно. Потому что сотые доли в итоге меняются при обратном преобразовании.

Может быть еще как то можно решить эту же задачу ?
сама таблица с данными формируется php скриптом.

Zibba 03.02.2009 13:48

Тогда нужно вешать событию деления не на onclick, а на onmousedown и сохранять исходные значения в какой нибудь массив или переменные, которые по событию onmouseup будут обратно записываться. Ну либо в Вашем сучае false или true.

madgals 03.02.2009 14:09

я так и подумал, но все, опять же, упирается в знание javascript.

Zibba 03.02.2009 14:27

Заведите какой нибудь массив в функции, перед условиями на true и false. и в Цикле:
var old[];
while(i < tr.length){
    // запишите в него значения из ячеек таблицы
    var td = tr[i].getElementsByTagName('td');
    old[i] = td[3].innerHTML;
    i++;
}
/* теперь у Вас в массиве old сохранены значения ячеек с исходными
 значениями и теперь можно в дальнейшем для вычисления значений
 использовать его.

 например так
*/
if (document.getElementById("in_rub").checked==true) {
    i = 1;
    while(i < tr.length){
        var td = tr[i].getElementsByTagName('td');
        var value = parseFloat(old[i]) / parseFloat(kurs);
        td[3].innerHTML = value.toFixed(2);
        i++;
    }
}
/* а обратное преобразование и того будет проще, просто в цикле без
 всяких вычислений, записывайте в нужную клетку созраненное ранее
 значение. Вот таким образом
*/
td[3].innerHTML = old[i];

madgals 03.02.2009 17:20

есть трабла. суть вот в чем.
я делаю checked. оно становится true, значения меняются.
При unchek'е происходит новый вызов функции и ввод туда новых значений. в итоге ничего не получается.

тут видимо нужен какой то иной метод вызова или еще что то

x-yuri 03.02.2009 17:33

что значит ничего не получается?
http://getfirebug.com/

Zibba 03.02.2009 17:36

madgals,
Да я напортачил еще с логикой, если сохранять значения ячеек таблицы в самой функции замена, то будет не правильно (логически). Поэтому лучше делайте это перед вызовом функции, или сохраните значения глобально по window.onload.

madgals 03.02.2009 17:45

Ну что же. попробую.

x-yuri 03.02.2009 17:49

значения можно в функции хранить (типа статические переменные)
arguments.callee.old = []
var old = arguments.callee.old;
while(i < tr.length){
    // запишите в него значения из ячеек таблицы
    var td = tr[i].getElementsByTagName('td');
    old[i] = td[3].innerHTML;
    i++;
}

Zibba 03.02.2009 18:02

Кстати да, способ предложенный x-yuri будет даже лучше и по производительности и вообще по элегантности :)

to x-yuri,
а конструкция arguments.callee это что то на подобие static в СИ!? только для данного скопа да!?

x-yuri 03.02.2009 18:09

если функция глобальная (func), то
arguments.callee === func

это я так, скорее всего автор может просто обойтись названием функции

Kolyaj 03.02.2009 18:16

Цитата:

Сообщение от Zibba
а конструкция arguments.callee это что то на подобие static в СИ!?

Это ссылка на функцию, внутри которой находимся.

madgals 04.02.2009 10:15

Цитата:

Сообщение от x-yuri (Сообщение 11948)
значения можно в функции хранить (типа статические переменные)
arguments.callee.old = []
var old = arguments.callee.old;
while(i < tr.length){
    // запишите в него значения из ячеек таблицы
    var td = tr[i].getElementsByTagName('td');
    old[i] = td[3].innerHTML;
    i++;
}

Этот вариант внутри функции замена тоже не работает. Потому вывел определения массива old в конец страницы, а в функцию zamena просто передал этот массив. В итоге все работает как надо ) всем спс большое за помощь )

P.S. Такая конструкция arguments.callee.old = [] у меня ни в одном браузере не заработала. надо arguments.callee.old = new Array()

Kolyaj 04.02.2009 10:19

Цитата:

Сообщение от madgals
P.S. Такая конструкция arguments.callee.old = [] у меня ни в одном браузере не заработала. надо arguments.callee.old = new Array()

Это одно и то же.

madgals 04.02.2009 10:31

я понимаю, что одно и тоже. Но, увы, не работает.

x-yuri 04.02.2009 11:18

Цитата:

я понимаю, что одно и тоже. Но, увы, не работает.
Цитата:

При unchek'е происходит новый вызов функции и ввод туда новых значений. в итоге ничего не получается.
очень описательно
http://getfirebug.com/

q--b 04.02.2009 15:09

Цитата:

Может быть еще как то можно решить эту же задачу ?
сама таблица с данными формируется php скриптом.
вот именно php скриптом её и надо решать,а иначе говоря - серверными силами. Это будет намного практичнее и эффективнее. . .

Zibba 04.02.2009 15:41

q--b,
Если Вы не заметили, то топикстартеру нужно чтобы значения в таблице перестчитывались и заменялись если стоит определенный флаг или действие, и возвращались обратно, по отмене этого действие (чекбокс).
Цитата:

Сообщение от q--b
вот именно php скриптом её и надо решать,а иначе говоря - серверными силами. Это будет намного практичнее и эффективнее. . .

Не рентабельно каждый раз грузить новую страницу и грузить этими вычислениями сервер, если их можно выполнить на строне клиента!

q--b 04.02.2009 18:13

Цитата:

Сообщение от Zibba (Сообщение 12049)
q--b,
Если Вы не заметили...

bla bla bla и все такое - вы становитесь предсказуемым да и вообще тут не того масштаба операции чтобы переживать за сервер другое дело если бы я тоннами числа с плавающей точкой умножал тогда может быть . . .и кстати если вы заметили

Цитата:

Сообщение от madgals
Может быть еще как то можно решить эту же задачу ?

впрочем все это снова никчёмный трёп,а по факту серверный вариант нужен в первую очередь, а уж на него сверху всякие js финтифлюшки накручивайте и прочее. . .или вы всегда одеваете сначала шапку,пальто,а потом только туфли ?


вот готовый пример...http://club.dyndns.biz/dom/tab.php

создадим файл header.inc с кодом

Код:

<?php
echo
"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='en' xml:lang='en'>
<head>
<title>tab</title>
</head>
<body bgcolor='#C4C5B1'>
<form action='check.php' method='POST'>
<center>
<br/><h3>введите значение согласно курсу валюты</h3><br/>
<input type='text' name='val' size='2' maxlength='2'/><input type='submit' name='calc' value='calc'/><br/><br/>
</center>
<table style=height:50%;width:100%;>
<tr><th width='30%'><h1>товар</h1></th><th width='40%'>&nbsp;</th><th width='30%'><h1>цена</h1></th></tr>
</table>
<table style=height:50%;width:100%;>";
?>

создадим файл tab.php с кодом

Код:

<?php
include('header.inc');
$prise=array(1000,2000,3000,4000,5000,6000,7000,8000,9000,10000);
$items=array('car','ball','doll','stone','matches','cup','cap','spoon','bottle','pen');
$a=sizeof($prise);
for($i=0;$i<$a;$i++){
        echo"\n".'<tr><th width=30%>'.$items[$i]."<th width=40%><img src=\"images/".$i.".gif\" width=50 height=50 alt=\"?\"/></th></th><th id=\"a".$i."\" width=30%>".$prise[$i]."</th></tr>";
        }
include('footer.inc');
?>


создадим файл сценария check.php с кодом

Код:

<?php
include('header.inc');
$prise=array(1000,2000,3000,4000,5000,6000,7000,8000,9000,10000);
$items=array('car','ball','doll','stone','matches','cup','cap','spoon','bottle','pen');
$pat="/[1-9]/";
if(preg_match($pat,$_POST['val'])){
        $a=sizeof($prise);
        for($i=0;$i<$a;$i++){
                echo"\n".'<tr><th width=30%>'.$items[$i]."<th width=40%><img src=\"images/".$i.".gif\" width=50 height=50 alt=\"?\"/></th></th><th id=\"a".$i."\" width=30%>".$prise[$i]/$_POST['val']."</th></tr>";
                }
            }
        else{
                echo"<center><font color='red'>некорректное значение</font></center>";
                $a=sizeof($prise);
                for($i=0;$i<$a;$i++){
                        echo"\n".'<tr><th width=30%>'.$items[$i]."<th width=40%><img src=\"images/".$i.".gif\" width=50 height=50 alt=\"?\"/></th></th><th id=\"a".$i."\" width=30%>".$prise[$i]."</th></tr>";
                        }
                    }
include('footer.inc');
?>

создадим файл footer.inc с кодом

Код:

<?php
echo
"\n</table>
</body>
</html>";
?>

p.s.
Для корректной работы все должно лежать в одной папке на сервере! Оговорка - много хтмл ошибок,но хтмл можно менять не трогая скрипт! Ячейкам с ценой присвоены id чтобы вам было удобно потом работать с js. Есть дырка и может не одна,но если пива поставите - напишу патч! Возможен вариант, что напишу все полностью вместе с javascript обновлением цены,но это уже за денежку, хотя. . .может и так напишу если время будет ,ибо мне это тоже пригодится. . .:)

Zibba 04.02.2009 23:21

Цитата:

Сообщение от q--b
вы становитесь предсказуемым

Это к чему!? O_O Если честно вот в этом месте я Вас вообще не понял :D . Вы так говорите будто я когда то с Вами тут спорил (обращайте внимания на ники, не у всех они бывают такими уникальными как у Вас, у некоторых и на Z начинаются)

Цитата:

Сообщение от q--b
Может быть еще как то можно решить эту же задачу ?

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

И давно хотел у Вас спросить уважаемый q--b почему Вы начинаете предлагать свои вселенские варианты решения только после того как топик стартер скажет всем спасибо за помощь и заветные слова "Проблема решена!"!?

P.S. Даже спорить с Вами не хочется больше, извините но если Вам не нравится мое решение данного вопроса, то это не означает что оно не правильно или единственно верное. Если Вы не в курсе, то воду можно пить не только из чашки, но и из бутылки, из под крана, с рук etc, другой вопрос от чего ты останешься доволен.

P.P.S. Просьба к Администрации, удалите этот флуд и флейм на тему "В ИНТЕРНЕТЕ СНОВА КТО ТО НЕ ПРАВ", а то на мой взгляд портит всю картину более менее нормального топика, человек обратился с задачей ему показали как можно сделать. Он попробовал (реально старался, было видно что не просто выпрашивает код, а и сам что то делает. Далее усложнил задачу, ему помогли разобраться, в итоге человек остался доволен. Больше бы таких добродушных топиков). Но под конец пришел Черный властелин в лице анонимуса и начал вершить суд над неверными.

Простите, накипело просто.

q--b 05.02.2009 01:39

Цитата:

Сообщение от Zibba (Сообщение 12080)
Простите, накипело просто.[/i]

гы гы гы - накипело у него ! :D воду можно и из лужи пить только это ни есть хорошо, а решение проблемы мной началось только когда увидел топик и вопрос "Может быть еще как то можно решить эту же задачу ?"
p.s.
продолжаю усовершенствовать код доберусь и до js задумки уже есть ! Пример доступен все так же по адресу http://club.dyndns.biz/tab/tab.php Плохо,что на работу утром :mad: . . .

madgals 05.02.2009 14:44

q--b
посмотрел твой примерчег. все целиком решается на стороне сервера. В моем случае это было неприемлемо. Перезагрузка страницы - это лишнее. Был найден способ с джава скриптом и dhtml'ом.
Если что то предлагать дальше, то AJAX, а никак не чистый пхп.
P.S.И харе флудить. тут не phpclub, тут javascript и вопросы тут по javascript. А если есть желание блеснуть знаниями php то вперед на phpclub.

x-yuri 05.02.2009 14:53

madgals, если ты не рассчитываешь на пользователей с отключенным js, то надо делать на js. Если же ты хочешь сделать страничку более доступной, можно сделать на php, а поверх этого, если js включен, сделать вариант на javascript

madgals 05.02.2009 14:57

x-yuri
Javascript'а на сайте сейчас не так уж и много. Только раскраска строк таблицы, перевод в у.е. и вывод схемы проезда до точки.
Так что не думаю что будут проблемы с отображением.

x-yuri 05.02.2009 15:31

дело не в много/мало, а в том, рассчитываешь ли ты на людей с отключенным js

Zibba 05.02.2009 16:29

Цитата:

Сообщение от x-yuri
рассчитываешь ли ты на людей с отключенным js

Как по мне, так это люди живущие в каменном веке, (что то типа синонимичное DOMlevel0) WEBlevel0 =) .

P.S. Если судить о включенном/не включенном JS и спорить на эту тему, то могу привести как веский аргумент vkontakte.ru, кол-во пользователей этого ресурса, наглядный показатель включенности JS в рунете :) . А для пользователей с PDA делают специальную версию сайта, порой это дешевле/проще/меньше грузит сервер/%еще какой то вариант%, чем выдумывать универсальные способы решения задачи для десятой доли процента, которые порой не оправдают потраченного времени и ресурсов. :) (это так, мысли в слух)


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