Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите разобраться со счетчиком кол-ва товаров (https://javascript.ru/forum/misc/50089-pomogite-razobratsya-so-schetchikom-kol-va-tovarov.html)

landerorly 11.09.2014 15:08

Помогите разобраться со счетчиком кол-ва товаров
 
Доброго времени суток. Проблема такова, есть таблица товаров: http://joxi.ru/CHsRVP3JTJCcfJwntko , нужно чтобы счетчик кол-ва первого товара в ней начинался с 1 сразу при попадании на эту страницу, те как-бы первый товар по дефолту уже являлся купленным и лежал в корзине в количестве как минимум одной штуки а его цена была учтена в общей сумме вот так: http://joxi.ru/s3wRVIwyTJDnAiC13nU

Моих познаний пока хватило только найти куски кода что все это хозяйство реализуют, но разобрать эти "награмождения" я пока не в состоянии:

<td class="cell_salesPrice"><div id="salesPrice_text_0"><div class="PricesalesPrice" style="display : block;" ><span class="PricesalesPrice" >230 р.</span></div></div></td><td class="cell_quantity">
				<span class="quantity-box"><input class="quantity-input js-recalculate" size="2" id="quantity_0" name="quantity[]" value="0" type="text" onblur='changeQuantity(0, "input", 0, 0, "")'></span>
				<span class="quantity-controls js-recalculate"><input class="quantity-controls quantity-plus" onclick='changeQuantity(0, "plus", 0, 0, "")' type="button">
				<input class="quantity-controls quantity-minus" onclick='changeQuantity(0, "minus", 0, 0, "")' type="button"></span>
				</td>


if ($check_stock == 1 && $product['child']['product_in_stock'] > 0 || $check_stock == 0){
			//Quantity
			// min max box quantity
			$min_order_level = '0';
			$max_order_level = '0';
			$product_box = '0';
			if (isset($product['qparam'])) {
				$min_order_level = $product['qparam']['min'];
				$max_order_level = $product['qparam']['max'];
				$product_box = $product['qparam']['box'];
			}
			// min max box end
			if (!VmConfig::get('use_as_catalog', 0)  ) {
				if (!$callforprice) {
				echo '<td class="cell_quantity">
				<span class="quantity-box"><input class="quantity-input js-recalculate" size="2" id="quantity_'.$i.'" name="quantity[]" value="0" type="text" onblur=\'changeQuantity('.$i.', "input", '.$min_order_level.', '.$max_order_level.', '.$product_box .')\'></span>
				<span class="quantity-controls js-recalculate"><input class="quantity-controls quantity-plus" onclick=\'changeQuantity('.$i.', "plus", '.$min_order_level.', '.$max_order_level.', '.$product_box .')\' type="button">
				<input class="quantity-controls quantity-minus" onclick=\'changeQuantity('.$i.', "minus", '.$min_order_level.', '.$max_order_level.', '.$product_box .')\' type="button"></span>
				</td>';
				} else {
				echo '<td class="cell_quantity">
				<a class="ask-a-question bold" href="'.$callforprice_url.'" rel="nofollow" >'.JText::_ ('COM_PRODUCT_ASKPRICE').'</a>
				</td>';
				}
			}


function changeQuantity (noQ, funcQ, minQ, maxQ, boxQ) {
	var qty_el = document.getElementById('quantity_'+noQ);
	var qty = qty_el.value;
	minQ = parseFloat(minQ);
	maxQ = parseFloat(maxQ);
	boxQ = parseFloat(boxQ);
	qty = parseFloat(qty);
	if (funcQ == "minus") {
		if (minQ && minQ > 0) {
			if (qty <= minQ) {
				qty = 0;
			}
			else if (maxQ && qty > maxQ) {
				qty = maxQ;
			}
			else {
				if (boxQ && boxQ > 0) {
					if ((qty%boxQ) != 0) {
						qty -= (qty%boxQ);
					}
					else {			
						qty -= boxQ;
					}
				}
				else
					qty--;
			}
		}
		else {
			if ( !isNaN( qty ) && qty > 0 ) {
				if (boxQ && boxQ > 0) {
					if ((qty%boxQ) != 0) {
						qty -= (qty%boxQ);
					}
					else {
						qty -= boxQ;
					}
				}
				else
					qty--;
			}
			else if (qty < 0)
				qty = 0;
		}
	}
	if (funcQ == "plus") {
		if (maxQ && maxQ > 0) {
			if (qty >= maxQ) {
				qty = maxQ;
			}
			else if (qty == 0 && minQ && minQ > 0) {
				qty = minQ;
			}
			else if (qty < 0) {
				qty = 0;
			}
			else {
				if (boxQ && boxQ > 0) {
					if ((qty%boxQ) != 0) {
						qty += (boxQ-(qty%boxQ));
					}
					else {
						qty += boxQ;
					}
				}
				else
					qty++;
			}
		}
		else {
			if ( !isNaN( qty ) && qty >= 0) {
				if (boxQ && boxQ > 0) {
					if ((qty%boxQ) != 0) {
						qty += (boxQ-(qty%boxQ));
					}
					else {
						qty += boxQ;
					}
				}
				else
					qty++;
			}
			else 
				qty = 0;
		}
	}
	if (funcQ == "input") {
		if (maxQ && maxQ > 0 && qty >= 0) {
			if (qty >= maxQ) {
				qty = maxQ;
			}
			else {
				if (boxQ && boxQ > 0) {
					if ((qty%boxQ) != 0) {
						qty += (boxQ-(qty%boxQ));
					}
				}
			}
		}
		if (qty <= 0) {
			qty = 0;
		}
	}
 
	qty_el.value = qty;
	if (updateprice == 1) {
		getPrice (noQ);
	}
	else {
		updateSumPrice(noQ);
	}
	return false;
}

tsigel 11.09.2014 15:26

Сделайте програмный клик по плюсику на онлоад и все. :)

window.onload = function () {
  document.querySelector("selector").click();
}


А лучше - перепишите код добавления с 0, а то он страшный.

landerorly 11.09.2014 16:01

Честно попробовал разобраться в том что вы посоветовали, но пока смог разобрать, что вместо "selector" надо ставить (в моем случае) что-то вроде: "input.quantity-plus", но что подставить в остальные скобки/функции и пр., не понял. Простите уж неграмотного, я только учусь...:cray:

landerorly 11.09.2014 16:24

Все спасибо добрый человек, + те "в репу":dance:

tsigel 11.09.2014 16:34

Цитата:

но что подставить в остальные скобки/функции и пр., не понял.
Больше ничего не надо.

<table>
  <tr>
    <td>Наименование товара</td>
    <td>Цена</td>
    <td></td>
  </tr>
  <tr>
    <td>Золотой вантус с платиновой насадкой</td>
    <td>100000</td>
    <td><input class="by" type="button" data-price="100000" value="Купить"></td>
  </tr>
</table>

Итого:
<input class="output" type="text" value="0" readonly>

<script>

var $ = function (selector) {
  return document.querySelector(selector)
};

$(".by").addEventListener("click", function () {

   $(".output").value = parseInt($(".output").value, 10) + parseInt(this.getAttribute("data-price"), 10);
  
    alert("Поздравляем первого обладателя золотого вантуса!");

}, false);

$(".by").click();

</script>


Эх.. Долго писал..


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