Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   массив объектов (https://javascript.ru/forum/misc/42096-massiv-obektov.html)

Anna77 12.10.2013 09:24

массив объектов
 
Здравствуйте! Подскажите, какие ошибки в коде? Для вывода данных надо применить созданный самостоятельно метод объекта

BETEPAH 12.10.2013 11:00

Начните с того, что составьте алгоритм.
Вот, что по-Вашему должен делать код:
do{
 var str1 = prompt("Введите имя", "Name");
} while (str1 !== "");

По-моему, он будет у посетителя бесконечно спрашивать имя, пока тот не сдастся и не введет пустую строку.
Проверки на ESC вообще нет в коде.
Избавьтесь от document.write (замените на innerHTML, например).
И, пожалуйста, обрамляйте код тегом JS run

Anna77 12.10.2013 21:09

Спасибо большое за ответ!
Я добавила проверку на ESC, но все равно код не работает:(
do
{
var str1 = prompt("Введите имя", "Name");
}
while (str1 !== "" || str1 !== null);

SP7 12.10.2013 22:58

Информация Вам для размышления.

Первое: Зачем здесь проверка на неравенство с учетом типа?
Второе: Зачем такое сложное условие в while, во-первых оно не правильно, во вторых его можно упростить.


А теперь правильный ответ :) В Вашем случае нужно было написать так:

do
        {
            var str1 = prompt("Введите имя", "Name");
        }
        while (!str1);


Почему так:

Первое: код становится более читабельным, поскольку условие в while более наглядно
Второе: потому что так все работает как надо! :))

SP7 12.10.2013 23:55

Оформите код в посте по настоящему, через вставку JavaScript, а то глаза сломаешь такое читать. И в двух словах какая задача перед Вами стоит.

BETEPAH 13.10.2013 00:33

<div id="outer"></div>
<script>
var arr = [], addThis = true;
function Person(name,surname,age) {
	this.name = name;
	this.surname = surname;
	this.age = age;
};
while (addThis) {
	var str1 = prompt('Введите имя', 'Name');
	if (!str1) break;
	var str2 = prompt('Введите фамилию', 'Surname');
	var str3 = +prompt('Введите возраст', 0);
	addThis = str1 && str2 && str3;
	if (addThis) arr.push(new Person(str1,str2,str3));
};
var str = '<table><tr><td>Имя</td><td>Фамилия</td><td>Возраст</td></tr>';
for (var i = 0; i < arr.length; i++) str += '<tr><td>' + arr[i].name + '</td><td>' + arr[i].surname + '</td><td>' + arr[i].age + '</td></tr>';
str += '</table>';
document.getElementById('outer').innerHTML = str;
</script>

Anna77 13.10.2013 00:34

Цитата:

Сообщение от SP7 (Сообщение 276146)
И в двух словах какая задача перед Вами стоит.

Нужен конструктор объектов, ввод данных с клавиатуры. Остановка ввода, если имя не введено или нажата клавиша ESC. Сохранить данные в массиве объектов.Вывести данные в окно браузера в виде таблицы. Для вывода применить созданный метод объекта

Anna77 13.10.2013 14:26

BETEPAH, спасибо большое за ответ! Не подскажете ли вариант вывода таблицы при помощи созданного метода объекта (через prototype)?:)

BETEPAH 13.10.2013 14:35

Anna77,
Если не секрет, ответьте, мы тут всем форумом поступаем куда-то? Или уже поступили и готовим курсовые? :)
Написать Вам готовый метод? Или сами догадаетесь, что он будет содержать то, что находится в 18й строке (с некоторыми изменениями, конечно)?

BETEPAH 13.10.2013 14:51

Так и я спросил, мне же интересно, чему (какому заведению) соответствует этот уровень задач. Попробуйте для начала, подумайте. Если не справитесь к вечеру, свистните я напишу Вам метод


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