Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.02.2009, 15:43
Аспирант
Отправить личное сообщение для madgals Посмотреть профиль Найти все сообщения от madgals
 
Регистрация: 27.12.2008
Сообщений: 53

Фига се! Убрал <th> из таблицы и заработало. странно как то
народ. помогите, ну правда, очень надо.
Ответить с цитированием
  #12 (permalink)  
Старый 02.02.2009, 17:05
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

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


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

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

Последний раз редактировалось Zibba, 02.02.2009 в 17:13. Причина: Дополнил ответ
Ответить с цитированием
  #13 (permalink)  
Старый 02.02.2009, 17:17
Аспирант
Отправить личное сообщение для madgals Посмотреть профиль Найти все сообщения от madgals
 
Регистрация: 27.12.2008
Сообщений: 53

спасибо. попробую )
Ответить с цитированием
  #14 (permalink)  
Старый 03.02.2009, 11:29
Аспирант
Отправить личное сообщение для madgals Посмотреть профиль Найти все сообщения от madgals
 
Регистрация: 27.12.2008
Сообщений: 53

Сделал в итоге вот так.
<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>

В итоге, каждый раз когда нажимаю на чекбокс происходит деление.
А как сделать так чтобы по отжатию все возвращалось на прежние значения ?
Ответить с цитированием
  #15 (permalink)  
Старый 03.02.2009, 12:16
Аспирант
Отправить личное сообщение для madgals Посмотреть профиль Найти все сообщения от madgals
 
Регистрация: 27.12.2008
Сообщений: 53

Сделал так
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 скриптом.
Ответить с цитированием
  #16 (permalink)  
Старый 03.02.2009, 13:48
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

Тогда нужно вешать событию деления не на onclick, а на onmousedown и сохранять исходные значения в какой нибудь массив или переменные, которые по событию onmouseup будут обратно записываться. Ну либо в Вашем сучае false или true.
Ответить с цитированием
  #17 (permalink)  
Старый 03.02.2009, 14:09
Аспирант
Отправить личное сообщение для madgals Посмотреть профиль Найти все сообщения от madgals
 
Регистрация: 27.12.2008
Сообщений: 53

я так и подумал, но все, опять же, упирается в знание javascript.
Ответить с цитированием
  #18 (permalink)  
Старый 03.02.2009, 14:27
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

Заведите какой нибудь массив в функции, перед условиями на 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];
Ответить с цитированием
  #19 (permalink)  
Старый 03.02.2009, 17:20
Аспирант
Отправить личное сообщение для madgals Посмотреть профиль Найти все сообщения от madgals
 
Регистрация: 27.12.2008
Сообщений: 53

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

тут видимо нужен какой то иной метод вызова или еще что то
Ответить с цитированием
  #20 (permalink)  
Старый 03.02.2009, 17:33
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

что значит ничего не получается?
http://getfirebug.com/
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Умножение численных значений формы ввода FastSP Общие вопросы Javascript 8 08.04.2012 20:45
Автоматическая подсветка строк таблицы mihha Элементы интерфейса 5 01.02.2009 01:28
Добраться до ячеек таблицы через DOM twolf Events/DOM/Window 11 21.01.2009 17:29
Фиксированный заголовок таблицы ilshat Элементы интерфейса 6 20.12.2008 00:35