Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.11.2013, 23:44
Аспирант
Отправить личное сообщение для Chekist Посмотреть профиль Найти все сообщения от Chekist
 
Регистрация: 31.10.2013
Сообщений: 38

Возможно ли?
Дано:

на странице после поиска позиции отображаются по такому принципу - каждая в своем диве с уникальным id из базы.
Пример.
<div class="tovar" id="41">
				
										<div class="tovar-image">
										<img src="/img/b/f1.jpg">
										</div>

										<div class="tovar-name">
										Патрик<br>
										</div>

										<div class="tovar-inside-and-size">
										(гелий, 80х60 см)
										</div>

										<div class="tovar-price">
										280 руб/шт
										</div>
										<div class="numbers"><span class="minus"></span><input id="41" type="text" value="1" size="3"><span class="plus"></span><span class="check"></span>

</div>
</div>


Необходимо:
при нажатии на span class="check" вызывается функция подсчета общей суммы (значение из родительского class="tovar-price" умножается на значение родительского input.

Как описать функцию? )

Вопрос номер 2: делать все же подобные вещи лучше на аякс?
Ответить с цитированием
  #2 (permalink)  
Старый 05.11.2013, 00:14
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

Я обычно играюсь так
echo '<span id="сheck'.$id.'" class="check"></span>'


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


Сообщение от Chekist Посмотреть сообщение
Вопрос номер 2: делать все же подобные вещи лучше на аякс?
Аякс нужен для того что бы загрузить данные из бд (или выполнить какие нибудь другие операции с бд и/или запись/чтение сессий ), и при этом остаться на этой же странице (!)... Если такой задачи нет, то вы сами знаете ответ.

Последний раз редактировалось Faab, 05.11.2013 в 00:29.
Ответить с цитированием
  #3 (permalink)  
Старый 05.11.2013, 00:26
Аспирант
Отправить личное сообщение для Chekist Посмотреть профиль Найти все сообщения от Chekist
 
Регистрация: 31.10.2013
Сообщений: 38

Сообщение от Faab Посмотреть сообщение
Я обычно играюсь так
echo '<span id="сheck'.$id.'" class="check"></span>'


Потом при клике, отделяю сам id. А зная id, можно показывать или обрабатывать как угодно и что угодно.
Зачем еще раз вызывать то, что уже и так известно?
Надо взять цену из "tovar-price", умножить на количество из "value", получив тем самым число... но! это все должно быть взято именно из этого div class=tovar с уникальным своим id!
Ответить с цитированием
  #4 (permalink)  
Старый 05.11.2013, 00:31
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

Ну во первых у вас два элемента с одинаковым id.

<div class="tovar" id="41">
<input id="41" type="text" value="1" size="3">
Ответить с цитированием
  #5 (permalink)  
Старый 05.11.2013, 00:34
Аспирант
Отправить личное сообщение для Chekist Посмотреть профиль Найти все сообщения от Chekist
 
Регистрация: 31.10.2013
Сообщений: 38

Сообщение от Faab Посмотреть сообщение
Ну во первых у вас два элемента с одинаковым id.

<div class="tovar" id="41">
<input id="41" type="text" value="1" size="3">
Уберу. Это осталось от прошлых попыток что-то сделать с кодом... пусть id будет только у родителя .tovar
Ответить с цитированием
  #6 (permalink)  
Старый 05.11.2013, 00:51
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

<div class="tovar" id="41">
	<div class="tovar-image"><img src="/img/b/f1.jpg"></div>
	<div class="tovar-name">Патрик<br></div>
	<div class="tovar-inside-and-size">(гелий, 80х60 см)</div>
	<div class="tovar-price">280 руб/шт</div>
	<div class="numbers">
		<span class="minus"> - </span><input id="41" type="text" value="1" size="3"><span class="plus"> + </span><span class="check">Клик сюда!</span>
	</div>
</div>
<div class="tovar" id="42">
	<div class="tovar-image"><img src="/img/b/f1.jpg"></div>
	<div class="tovar-name">Патрик<br></div>
	<div class="tovar-inside-and-size">(гелий, 80х60 см)</div>
	<div class="tovar-price">280 руб/шт</div>
	<div class="numbers">
		<span class="minus"> - </span><input id="42" type="text" value="2" size="3"><span class="plus"> + </span><span class="check">Клик сюда!</span>
	</div>
</div>
<script>
var goods = document.getElementsByClassName('tovar');
for (var i = 0; i < goods.length; i++) {
	goods[i].getElementsByClassName('check')[0].onclick = (function(thisGood) {
		return function() {
			alert(parseFloat(thisGood.getElementsByClassName('tovar-price')[0].innerHTML) * thisGood.getElementsByTagName('input')[0].value);
		}
	})(goods[i])
}
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 05.11.2013, 00:54
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

Я покажу в JQuery, потому что в JS я буду полдня писать.. но смысл вы поймёте.

<div class="tovar" id="div41">
				
										<div class="tovar-image">
										<img src="/img/b/f1.jpg">
										</div>

										<div class="tovar-name">
										Патрик<br>
										</div>

										<div class="tovar-inside-and-size">
										(гелий, 80х60 см)
										</div>

										<div class="tovar-price"><span class="product_price_41">
										280</span> руб/шт
										</div>
										<div class="numbers"><span class="minus"></span><input id="product_amount_41" type="text" value="1" size="3"><span class="plus"></span><span id="41" class="check">get totalprice</span>

</div>
</div>


$('.check').click(function(){
     var product_id = this.id;
     var product_amount = $('#product_amount_' + product_id).val();
     var product_price = $('#product_price_' + product_id).val();
});


Зная эти величины, теперь можно складывать и вычитать.. на ваш вкус.

Последний раз редактировалось Faab, 05.11.2013 в 01:24. Причина: value заменил на val()
Ответить с цитированием
  #8 (permalink)  
Старый 05.11.2013, 01:04
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от Faab
class="product_price_41"
Сообщение от Faab
$('#product_price_' + product_id)
не-а
Ответить с цитированием
  #9 (permalink)  
Старый 05.11.2013, 01:10
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

Согласен, напортачил.

$(".product_price_" + product_id + "")


Какая внимательность! ))
Ответить с цитированием
  #10 (permalink)  
Старый 05.11.2013, 09:27
Аспирант
Отправить личное сообщение для Chekist Посмотреть профиль Найти все сообщения от Chekist
 
Регистрация: 31.10.2013
Сообщений: 38

Стопанулся на этапе:
http://jsfiddle.net/Mv6u6/2/
Необходимо чтобы при нажатии на ссылку брались значения ТОЛЬКО из родителельских дивов в их же пределах.

Что нужно дописать в код для выполнения этого обязательного условия?

ps.Это список товаров в магазине и ссылка будет в будущем формировать общую сумму (кол-во * цену). Соотв, там много таких дивов и получается, надо как-то определять родителя, а потом уже в нем объявлять эти переменные... вот только как это сделать.. уже кажется что все перепробовал.

Последний раз редактировалось Chekist, 05.11.2013 в 09:31.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли считать инфу посетителей с чужого сайта? Klerik Общие вопросы Javascript 2 20.09.2013 15:42
зависымый select на html возможно ли? pro_ef Библиотеки/Тулкиты/Фреймворки 1 20.02.2013 22:49
Возможно ли? zork0 Общие вопросы Javascript 8 12.12.2012 16:09
Возможно ли обращение к select по его name? Diablos Общие вопросы Javascript 15 26.09.2011 23:13
Возможно ли это? white.bear Я не знаю javascript 1 05.01.2011 12:53