Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.08.2011, 11:58
Аспирант
Отправить личное сообщение для DorianLeroy Посмотреть профиль Найти все сообщения от DorianLeroy
 
Регистрация: 05.05.2010
Сообщений: 36

Пишу калькулятор. Заступорился на простом вопросе.
Всем привет!

Пишу калькулятор. Структура его такова: вверху выбирается один из предложенных вариантов комплектации в виде картинок, обрамленных div'ами, с ценами. А ниже дополнительное оборудование списком в виде чекбоксов с ценами, обрамленных тегом form.

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

Это выглядит так.

<div id=1 value="23000"> <img src="1.jpg"></div>
<div id=2 value="34000"> <img src="2.jpg"></div>
<div id=3 value="65000"> <img src="3.jpg"></div>
<form onclick="price(this)">
    <input type="checkbox" name="zap1" value="10000" />
    <input type="checkbox" name="zap2" value="20000" /> 
    <input type="checkbox" name="zap3" value="50000" />
</form>

function price(form){
if (form.zap1.checked){
var zap1=parseFloat(form.zap1.value);
}
else zap1=0;
...//остальное допоборудование

var total=zap1+zap2+zap3;

document.getElementById("goldsum").innerHTML=total;

}


То есть пока функция реагирует только на клик по чекбоксам. Мне нужно чтобы в total запоминался value из div при клике по одному из них. Как это сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 22.08.2011, 13:47
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,227

Как вариант...

<script type="text/javascript">
function Get() {
	var os=event.target||event.srcElement
	var o=document.getElementById('container').getElementsByTagName('div')
	var i
	for (i=0; i<o.length; i++) {
		o[i].className=''
	}
	os.parentNode.className='Ok'
}
function price(form) {
	var o=document.getElementById('container').getElementsByTagName('div')
	var i
	var id
	for (i=0; i<o.length; i++) {
		if (o[i].className=='Ok') {
			id=o[i].id
			break
		}
	}
	i=document.getElementById(id).getAttribute('value')
	alert(i)
}
</script>

<div id='container' onclick='Get()'>
	<div id='1' value="23000"> <img src="http://javascript.ru/forum/images/smilies/smile.gif" /></div>
	<div id='2' value="34000"> <img src="http://javascript.ru/forum/images/smilies/wink.gif" /></div>
	<div id='3' value="65000"> <img src="http://javascript.ru/forum/images/smilies/blink.gif" /></div>
</div>
<form onclick="price(this)">
    <input type="checkbox" name="zap1" value="10000" />
    <input type="checkbox" name="zap2" value="20000" /> 
    <input type="checkbox" name="zap3" value="50000" />
</form>
Ответить с цитированием
  #3 (permalink)  
Старый 23.08.2011, 12:27
Аспирант
Отправить личное сообщение для DorianLeroy Посмотреть профиль Найти все сообщения от DorianLeroy
 
Регистрация: 05.05.2010
Сообщений: 36

Спасибо, очень полезный для моего начального уровня вариант
Ответить с цитированием
  #4 (permalink)  
Старый 26.08.2011, 13:46
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Почему бы не понавешать onclick на каждый из DIV-ов? Да, так меньше HTML-кода, но зато JavaScript код сложнее.
Единственный плюс - можно через родителя получить доступ у стилям каждого DIV-а и поменять классы неактивных DIV-ов... Но кто мешает сделать это через obj.parent?
В общем дело вкуса)
Ответить с цитированием
Ответ



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

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