Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Работа с классом в массиве


Автор: Fareastaz 3.11.2011, 09:21
Добрый день прошу помощи или подсказки направить на путь истинный:

есть 2 input для ввода данных товара title и price:

Код

<div id="cart" name="cart">

<div id="item_title" name="item_title" class="item_title">
<h4>Book title</h4>
<input type = "text" value=""  id="item_title"><br />
</div>

<div id="item_price" name="item_price" class="item_price">
<h4>Price</h4>
<input type = "text" value=""  id="item_price"><br />
</div>
<br/>
<input type="button" value="Submit" class="button" onclick="submit();">
<input type="button" value="checkout" class="button" onclick="checkout();">

</div>


По кнопке submit должен создаваться товар с названием и ценой (поля item_title и item_price)
А по кнопке checkout нужно вывести список всех товаров с ценами которые были введены и итоговую стоимость всех. 

я начал с создания класса тоесть при нажатии submit создаю класс таким образом: 
Код

function submit (title, price) {
    this.title = document.getElementById("item_title").value;
    this.price = document.getElementById("item_price").value;
}

Дальше как я представляю надо занести эти данные в массив при каждом нажатии submit а потом из маcсива надо вычислить поле item_price и вывести все item_title. Знаю что можно это сделать без классов но нужно с созданием классе. Подскажите пожалуйста как эти классы в массив занести и подсчитать. чтото мне подсказывает что нужно копать сюда.. itemsarray = new array(); item[("item_title")] = new item(title, price) но как это правильно записать?


Автор: Stolzen 3.11.2011, 09:25
Цитата(Fareastaz @  3.11.2011,  10:21 Найти цитируемый пост)
function submit (title, price) {
    this.title = document.getElementById("item_title").value;
    this.price = document.getElementById("item_price").value;
}

Боюсь, что если делать так, то this будет указывать на глобальный объект, т.е. на window.

Попробуйте так:

Код

function submit (title, price) {
    var self = {};
    self.title = document.getElementById("item_title").value;
    self.price = document.getElementById("item_price").value;
    return self;
}

Автор: Fareastaz 3.11.2011, 22:25
Цитата(Stolzen @  3.11.2011,  09:25 Найти цитируемый пост)
Попробуйте так:

 Спасибо за наводку, попробуюю

Автор: magelan 5.11.2011, 12:05
Код

<script type="text/javascript">
var itemsarray=[];
var tag=function(id)
{
    return document.getElementById(id);
}
</script>

<input value="submit" type="button" onclick="itemsarray[itemsarray.length]=new submit(tag('item_title').value, tag('item_price').value)" >

Автор: Fareastaz 7.11.2011, 19:22
magelan, Спасибо за идею, к сожалению постов мало репутацию вам не дают поднять..

Автор: -=Ustas=- 7.11.2011, 20:41
Цитата(Stolzen @  3.11.2011,  09:25 Найти цитируемый пост)
Боюсь, что если делать так, то this будет указывать на глобальный объект, т.е. на window.


Stolzen, при new submit контекст this будет именно этот объект, а не window. smile

Автор: Stolzen 8.11.2011, 12:06
Цитата(-=Ustas=- @  7.11.2011,  21:41 Найти цитируемый пост)
Stolzen, при new submit контекст this будет именно этот объект, а не window. smile 

Безусловно. Но тогда нужно называть submit c большой буквы - чтобы было видно, что это конструктор и для его вызова нужно обязательно использовать new. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)