в общем совсем запутался. циклом прошелся, как вы и сказали, но вот не понимаю одно, алерт выводит все значения value по порядку, но как занести в переменную например 14 элемент.
inputs = inputs[i].value- выводит опять же значение первого инпута. |
Цитата:
<button class="border" onclick="card.addToCard(this, '002', 'Зонт1', '1500', kolvo.value)">Купить</button> заменить на это: <button class="border" data-val="'002','Зонт1',1500">Купить</button> Назначит кнопкам обработчик, в котором получать значения атрибута data-val, добавляя к ним this (текущая кнопка) и значение input в родительском элементе "item", и передавая их как значения аргументов для функции cart.addToCart(). |
Цитата:
inputs[13].value - это значения 14-го элемента. |
Цитата:
хотел спросить, как код будет понимать, что сейчас я работаю, например, с 14 элементом и нужно получить его value? |
Цитата:
if ( i == 13) //код работающий с 14-ым элементом |
Цитата:
|
Спасибо за ответы. На основе всего, что вы мне написали, сделал так
$('button').on('click', numJq); function numJq(){ num = $(this).parent().find('input').val(); } проверяю алертом, получаю правильные значения value. Теперь еще одна проблема, результат выполнения этой функции (numJq) перенести в функцию this.addToCart = function(curObj, id, name, price, num) { id = ( $.isNumeric(id) ) ? "ID" + id.toString() : id; var goodieLine = {"id" : id, "name" : name, "price": price, "num" : num, "url" : document.location.href}; if ($.isEmptyObject(this.DATA)) { this.DATA[id] = goodieLine; this.IDS.push(id); } else for(var idkey in this.DATA) { if($.inArray(id, this.IDS) === -1) { this.DATA[id] = goodieLine; this.IDS.push(id) } else if (idkey == id) { this.DATA[idkey].num += num; } } которая и добавляет товар в корзину. Пытался создавать глобальную переменную - не работает. Полный код, который отвечает за добавление в корзину $('button').on('click', numJq); function numJq(){ num = $(this).parent().find('input').val(); alert(num); } this.addToCart = function(curObj, id, name, price, num) { id = ( $.isNumeric(id) ) ? "ID" + id.toString() : id; var goodieLine = {"id" : id, "name" : name, "price": price, "num" : num, "url" : document.location.href}; if ($.isEmptyObject(this.DATA)) { this.DATA[id] = goodieLine; this.IDS.push(id); } else for(var idkey in this.DATA) { if($.inArray(id, this.IDS) === -1) { this.DATA[id] = goodieLine; this.IDS.push(id) } else if (idkey == id) { this.DATA[idkey].num += num; } } localStorage.setItem(this.cardID, JSON.stringify(this.DATA)); localStorage.setItem(this.cardID + "_ids", JSON.stringify(this.IDS)); this.reCalc(); this.renderBasketTable(); var bird = $("#" + this.cardID + "_bird"); var pos = $(curObj).position(); bird.offset({ top: pos.top, left: pos.left}); bird.html(price); bird.show(); bird.animate( { 'left': this.widjetPos.left, 'top': this.widjetPos.top } , { 'duration': 500, complete: function() { bird.offset({ top: -300, left: -300}); } }); if (this.CONFIG.showAfterAdd) { cart.showWinow('bcontainer', 1); } } Какие еще варианты есть, не подскажите? |
Не нужна функция посредник:
$('button').click(function() { $(this).parent().find('input').val() - передаем далее в функцию }) //или методом .on, но уж тогда делегировать обработку ближайшему общему родителю их родителя $('selector').on('click', 'button', function() { //передаем далее }) А куда же делись '002','Зонт1',1500 и откуда этот код: this.addToCart = function(curObj, id, name, price, num), из чего-то выдрано? Чей это this? |
в оригинале все выглядит так
HTML: <div class="item border"> <img src="img/shop/zont1.png" width="200"> <p><b>Зонт1</b> | Цена: 1200 руб</p> <div class="sum_but"> <span class="plus">+</span> <input value="1" maxlength="2" name="" id='' type="text" class="mam"> <span class="minus">-</span> </div> <button class="border" onclick="cart.addToCart(this, '001', 'Зонт1', '1200', '')">Купить</button> </div> JS - обработчик: function WICard(obj) { this.widjetX = 0; this.widjetY = 0; this.widjetObj; this.widjetPos; this.cardID = ""; this.DATA = {}; this.IDS = []; this.objNAME = obj; this.CONFIG = {}; this.IMG = "..."; this.init = function(widjetID, config) { this.CONFIG = config || {}; try { this.DATA = JSON.parse(localStorage.getItem(widjetID)); // code to try //console.log("TRY - OK"); if ($.isEmptyObject(this.DATA)) { this.DATA = {}; } } catch (e) { this.DATA = {}; //onsole.log("TRY - BED"); } try { this.IDS = JSON.parse(localStorage.getItem(widjetID + "_ids")); if ($.isEmptyObject(this.IDS)) { this.IDS = []; } } catch (e) { this.IDS = []; } //console.log(this.DATA); this.cardID = widjetID; $("body").append("<div class='bird' id='"+widjetID +"_bird'></div>"); this.widjetObj = $("#" + widjetID); this.widjetPos = this.widjetObj.position(); if ($.isEmptyObject(this.DATA)) { this.widjetObj.html("Корзина пуста"); } else { this.reCalc(); this.renderBasketTable(); } } /*********************************************************************************************** * example: onclick="cart.addToCart(this, '2', 'Name of comic 2', '25500') **********************************************************************************************/ $('button').click(function() { num = $(this).parent().find('input').val(); alert(num); }) this.addToCart = function(curObj, id, name, price, num) { id = ( $.isNumeric(id) ) ? "ID" + id.toString() : id; var goodieLine = {"id" : id, "name" : name, "price": price, "num" : num, "url" : document.location.href}; if ($.isEmptyObject(this.DATA)) { this.DATA[id] = goodieLine; this.IDS.push(id); } else for(var idkey in this.DATA) { if($.inArray(id, this.IDS) === -1) { this.DATA[id] = goodieLine; this.IDS.push(id) } else if (idkey == id) { this.DATA[idkey].num += num; } } localStorage.setItem(this.cardID, JSON.stringify(this.DATA)); localStorage.setItem(this.cardID + "_ids", JSON.stringify(this.IDS)); this.reCalc(); this.renderBasketTable(); var bird = $("#" + this.cardID + "_bird"); var pos = $(curObj).position(); bird.offset({ top: pos.top, left: pos.left}); bird.html(price); bird.show(); bird.animate( { 'left': this.widjetPos.left, 'top': this.widjetPos.top } , { 'duration': 500, complete: function() { bird.offset({ top: -300, left: -300}); } }); if (this.CONFIG.showAfterAdd) { cart.showWinow('bcontainer', 1); } } |
Ну во-первых, этот обработчик должен "навешиваться" на что-то, если понимаете что и как, то на что указывает obj при вызове этого плагина?
Тут можно вообще отказаться от данных в кнопке, перенеся из в поле ввода, и немного подправив код плагина, тогда самое поле ввода будет источником всех данных, а функция будет определена в обработчике щелчка кнопки. |
Часовой пояс GMT +3, время: 11:19. |