Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.03.2014, 18:22
Интересующийся
Отправить личное сообщение для vesnushka163 Посмотреть профиль Найти все сообщения от vesnushka163
 
Регистрация: 22.03.2014
Сообщений: 12

не работает код! студентка мучается уже два дня! помогите!
Всем здравствуйте!

Прошу простой помощи, студентка четвертого курса, начали изучать JS, а преподаватель плохо помогает в написании кода. Найдите ошибку, я не пойму что не так.

Задание.
Создайте новый объект Goods для хранения информации о наличии товара в магазине. Объект должен иметь свойства
name - наименование товара (строка);
value - количество этого товара;
price - его цена.
Далее необходимо с помощью наследования из объекта Array описать объект Storeroom, который хранит массив объектов Goods. Для объекта необходимо поддерживать методы
add( name, value, price) - добавить новый товар (или увеличить его количество, если товар с наименованием name уже имеется. В этом случае цена товара может измениться на новое значение price);
changePrice( name, newPrice) - изменить цену товара name на новую newPrice;
sold( name, value) - отметить, что количество value товара name было продано;
toString() - вывести таблицу с указанием товара, его количества и цены, имеющегося на складе.


Решение:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
</HEAD>
<BODY>
<script LANGUAGE = "JavaScript">
function Goods (name, value, price)
{
this.name = name;
this.value = value;
this.price = price;
this,toString = toString;
}
function toString()
{
parent.frame2.document.write ("Товар:" + this.name + " Количество: " + this.value + " Цена: " + this.price + "<br>");
}
function add()
{
Storeroom[leng] = new Goods(document.Catalog.name1.value, document.Catalog.value1.value, document.Catalog.price1.value);
parent.frame2.document.write ("Товар: " +Storeroom[leng].name + " Количество: " + Storeroom[leng].value + " Цена: " + Storeroom[leng].price + "<br>" );
}
function changePrice()
{
var Proverka = 0
for (i = 0; i < leng; i++)
{
if (document.Catalog.name2.value ==Storeroom[i].name)
{
Storeroom[i].price = document.Catalog.price2.value;
Proverka = 1;
}
}


if (Proverka == 0) alert("Нет такого товара");
}
Function sold()
{
var Proverka = 0;
var SaleKol = parseFloat(document.Catalog.value3.value);
var OldKol;
var NewKol;
for (i = 0; i<leng; i++)
{
if (document.Catalog.name3.value == Storeroom[i].name)
{
OldKol = parseFloat(Storeroom[i].value);
if (SaleKol <= OldKol)
{
NewKol = OldKol - SaleKol;
Storeroom[i].value = NewKol;
Proverka = 1;
}
else
{
alert("Количество проданного товара не может превышать имеющийся запас!");
Proverka = 2;
}
}
}
if (Proverka ==0) alert("Такого товара нет в списке");
}
</SCRIPT>

<body bgcolor="white" text="black">
<FONT SIZE = 5>
<script LANGUAGE = "JavaScript">
Storeroom = new Array();
Storeroom[0] = new Goods ("Хлеб", "30", "50");
Storeroom[1] = new Goods ("Молоко", "50", "70");
Storeroom[2] = new Goods ("Сыр", "6", "200");
Storeroom[3] = new Goods ("Пряники", "4", "45");
var leng = Storeroom.length;
</SCRIPT>
<FORM NAME = "Catalog">
<font color="red">
<H2 align = left><u> Список товаров </u></H2><br>
Для просмотра списка товаров нажмите на кнопку "Каталог". <br><br>
<INPUT TYPE = "button" NAME = "Spisok" VALUE = "Каталог" onClick = "parent.frame2.location.href = 'about.blank'; Storeroom.toString();">
</font>
<font color="blue">
<H2 align=left><u> Добавление товара</u></H2><br>
Для добавления товара в каталог, введите наименование, цену и количество и нажмите кнопку "Добавить"
<PRE>
<INPUT TYPE = "text" NAME = "name1"VALUE="наименование">
<INPUT TYPE = "text" NAME = "value1"VALUE="количество">
<INPUT TYPE = "text" NAME = "price1"VALUE="цена">
</PRE>
<INPUT TYPE = "button" NAME = "Addname"VALUE="Добавить" onClick="add();leng=leng+1;">
<br>
</font>
<font color="green">
<H`1 align = left><u> Изменение цены </u></H1><br>
Для изменения цены товара, введите наименование этого товара и его новую цену и нажмите "Изменить цену".
Чтобы посмотреть изменение цены в каталоге необходимо обновить его, нажав два раза "Каталог". <br>
<PRE>
<INPUT TYPE = "text" NAME = "name2" VALUE = "наименование">
<INPUT TYPE = "text" NAME = "price2" VALUE = "цена">
</PRE>
<INPUT TYPE = "button" NAME = "ChangePrice" VALUE = "Изменить цену" onClick = "changePrice()">
<br><br>
</font>
<font color="pink">
<h1 align = left><u> Изменение количества </u></h1><br>
Для того, чтобы вычесть проданное количество товара, необходимо ввести в форму его наименование и количество проданного товара и нажать "Изменить количество".
Чтобы посмотреть изменение количества товара в каталоге необходимо обновить его, нажав два раза "Каталог". <br>
<PRE>
<INPUT TYPE = "text" NAME = "name3" VALUE = "наименование">
<INPUT TYPE = "text" NAME = "value3" VALUE = "количество">
</PRE>
<INPUT TYPE = "button" NAME = "ChangeValue" VALUE = "Изменить количество" onClick = "sold()">
<br><br>
</font>
</form>
</body>
</html>

кнопки не функционируют...ничего не происходит...хотя по теории написала вроде все правильно. месяц этот язык изучаю. помогите пожалуйста
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2014, 18:46
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

В консоль ошибок посмотри - сразу увидишь, в чем проблема.

Цитата:
Proverka
Названия переменных транслитом - очень плохой стиль.
Ответить с цитированием
  #3 (permalink)  
Старый 22.03.2014, 18:49
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Очень плохо, что не учат обращаться с отладчиком. Там и ошибки показываются, но главное, можно всё наглядно увидеть. У тебя опечатки. Например, 12-я строка - запятая перед .toString, вместо точки; 38-я строка - function с большой буквы. А ещё плохо, что студентов не научат писать нормально, чтобы потом не переучиваться. Начиная от форматирования, заканчивая устаревшими атрибутами, кодом в разметке и способами получения элементов.
Но главное. Раз уж ты так акцентируешь на том, что ты студентка, мы требуем СИСЕК!!! Я сейчас супер-серьёзно:
Ответить с цитированием
  #4 (permalink)  
Старый 22.03.2014, 18:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от vesnushka163
Function sold()
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #5 (permalink)  
Старый 22.03.2014, 19:04
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Да, кстати - тег form, атрибуты name, - все это нужно для взаимодействия с php. В твоем случае, где чистый javascript, в этом нет надобности. Еще - теги pre для сохранения переносов строк и font для изменения характеристик шрифта уже давно никто не использует. Впринципе, все современные страницы, в основном, описываются тегами <div>, <span> и <table>. Как же изменять шрифт, оставлять переносы строк, изменять цвет текста? Для этого есть css - язык описания внешнего вида документа. Вот так он выглядит:
<html>
<head>
<style>
/*Содержание тега <style> - это и есть css*/
/*Описываем, что текст внутри элементов с атрибутом class, равным bluetext, должен быть голубым*/
.bluetext 
{
  color: blue; 
}
/*Аналогично*/
.pre
{
 white-space: pre;
}
/*А вот здесь мы находим элемент по идентификатору*/
#yellow_background
{
 background-color: yellow;
}
</style>
</head>
<body>
<div class="bluetext">Здесь текст будет выведен голубым</div>
<div class="pre">Здесь переносы строк
будут
сохранены
</div>
<div id="yellow_background">
А здесь фон будет желтым. И, да, этот элемент css будет находить по идентификатору.
</div>
</body>
</html>

То есть, css - это конструкции вида

Код:
как найти элемент
{
  "деталь, которую хотим изменить в элементе":"как мы ее хотим изменить"
}
Та часть кода, где описывается то, как найти элемент, называется селектором. Та часть кода, где описывается то, как найти элемент, называется свойством.

Последний раз редактировалось Erolast, 22.03.2014 в 19:08.
Ответить с цитированием
  #6 (permalink)  
Старый 23.03.2014, 01:04
Интересующийся
Отправить личное сообщение для vesnushka163 Посмотреть профиль Найти все сообщения от vesnushka163
 
Регистрация: 22.03.2014
Сообщений: 12

вся проблема в том, что нас заставляют писать в блокноте. старые обычаи у преподавателей, что еще сказать.
Ответить с цитированием
  #7 (permalink)  
Старый 23.03.2014, 01:06
Интересующийся
Отправить личное сообщение для vesnushka163 Посмотреть профиль Найти все сообщения от vesnushka163
 
Регистрация: 22.03.2014
Сообщений: 12

Sweet,
сисек и в интернете много, если студентка - не значит что такая простая в разводе на непристойности.)))))
Ответить с цитированием
  #8 (permalink)  
Старый 23.03.2014, 01:08
Интересующийся
Отправить личное сообщение для vesnushka163 Посмотреть профиль Найти все сообщения от vesnushka163
 
Регистрация: 22.03.2014
Сообщений: 12

Erolast,
спасибо, много нового и интересного мне открылось)))) просто с JS я мягко сказать на "ВЫ", поэтому все так плохо. не учат совершенно, а самой сложно разбираться. когда что-то начинает работать, ко мне подходит преподаватель и спрашивает "как ты это сделала?!!!" наш университет дошел уже до крайней точки.(((
Ответить с цитированием
  #9 (permalink)  
Старый 23.03.2014, 01:39
Интересующийся
Отправить личное сообщение для vesnushka163 Посмотреть профиль Найти все сообщения от vesnushka163
 
Регистрация: 22.03.2014
Сообщений: 12

отладчик ругается на "parent.frame2" пишет "is undefined", что я могла забыть?
Ответить с цитированием
  #10 (permalink)  
Старый 23.03.2014, 11:02
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Ну правильно отладчик пишет. Parent.frame2 is undefined. Потому-что таких элементов на странице нету. Я вот вообще не понял, что это и зачем это - наверное, сие слишком олдскульно для меня)


http://learn.javascript.ru/play/UMbMcc

Вырезал все это parent.frame2. Поправил форматирование - блоки кода принято отбивать с помощью клавиши tab, при этом код становится во много раз читаемее, закоментил часть кода с непонятным для меня значением, но явно нарушающим валидность, исправил ошибки в тегах - например, <body> повторялся дважды, перенес код с объявлением объектов и функций в <head>. Нет, ну в общем-то все равно, где он распологается, но принято такие вещи в <head> размещать. Поменял кодировку на UTF-8 - сейчас везде используется именно это кодировка, пиши в ней. Верстку не стал на нормальную переделывать - вдруг преподаватель придерется, но могу показать как было бы лучше, если интересно.

Последний раз редактировалось Erolast, 23.03.2014 в 11:21.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03
Код калькулятора на JS. помогите с ошибкой! kirill.psl Общие вопросы Javascript 9 26.08.2010 11:38
Анимация. Помогите понять почему не работает. kadurban jQuery 4 08.07.2010 20:50
Не работает простой код. Помогите, очень надо AntiBuger Internet Explorer 1 27.05.2010 16:35
достал уже IE (не работает код) Weise Internet Explorer 11 29.03.2010 13:46