Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674

Свойства свойств объекта возвращают false

12.08.2014, 11:47. Показов 1360. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Есть такой объект
rainbow = {
    0: {0:255,1:255,2:255},
    1: {0:255,1:0,2:0},
    2: {0:0,1:255,2:0},
    3: {0:0,1:0,2:255},
    4: {0:255,1:255,2:0},
    5: {0:0,1:255,2:255},
    6: {0:255,1:0,2:255}
}
 
// Получается он со следующего кода:
var rainbow = '255,255,255;255,0,0;0,255,0;0,0,255;255,255,0;0,255,255;255,0,255',
     colours = rainbow.split(";"),
     new_rainbow = new Object();
 
for(var name in colours) {
     new_rainbow[name] = colours[name].split(",");
}
 
rainbow = new_rainbow;
 
// Но увы! При попытке просто вывести значение в переменную не хочет:
var y = 0;
 
for(var name in td) {
     a += Dump(rainbow[y][1]); // Если закомментировать строку, ошибка исчезает
     // ...
А ошибка в том...

Cannot read property '1' of undefined
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.08.2014, 11:47
Ответы с готовыми решениями:

Определение всех свойств объекта.
Где-то когда-то видел скриптик на JavaScript, который для заданного объекта показывает его члены (свойства, события, функции). Тока не могу...

Почему идет запись в свойство объекта с атрибутом writable: false ?
Потихоньку изучаю JavaScript. Для большего понимания сути объектов и их методов написал маленькую бессмысленную програмку (калькулятор). ...

Подскажите плз по перебору свойств DOM-объекта
Добрый день. Подскажите плз, почему вот такой код: function ButtonClick() { for (propertyName in document.forms.myform) { ...

6
Модератор
 Аватар для Thisman
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
12.08.2014, 12:01
Лучший ответ Сообщение было отмечено Maksimchikfull как решение

Решение

Maksimchikfull,
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    // Получается он со следующего кода:
    var rainbow = '255,255,255;255,0,0;0,255,0;0,0,255;255,255,0;0,255,255;255,0,255',
            colours = rainbow.split(";"),
            new_rainbow = {};
 
    for(var name in colours) {
        new_rainbow[name] = colours[name].split(",");
    }
 
    rainbow = new_rainbow;
 
    // Но увы! При попытке просто вывести значение в переменную не хочет:
    var y = 0;
    alert(rainbow[y][1]);
выводит без ошибок

Добавлено через 2 минуты
Maksimchikfull, создавай объекты не через конструктор

JavaScript
1
var obj = new Object () // только если явно надо указать прототип
Если нет, то создавай через литерал

JavaScript
1
var obj = {} // создали пустой объект
1
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
12.08.2014, 12:02
Maksimchikfull, скорее всего переменная "у" в последнем цикле становится больше, чем количество свойств в объекте, поэтому ошибка и возникает
1
Модератор
 Аватар для Thisman
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
12.08.2014, 12:08
z-z, в той строке, где находится ошибка, переменная name вообще не используется ( стр. 27 )
1
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
12.08.2014, 12:19
Цитата Сообщение от Thisman Посмотреть сообщение
в той строке, где находится ошибка, переменная name вообще не используется
JavaScript
1
2
3
4
5
6
// Но увы! При попытке просто вывести значение в переменную не хочет:
var y = 0;
 
for(var name in td) {
     a += Dump(rainbow[y][1]); // Если закомментировать строку, ошибка исчезает
     // ...
можно предположить, что после изменения переменной "а" где то в цикле увеличивается "у"...
что-то типа у++...
а значит у++ может произойти большее количество раз, чем количество свойств в объекте.

но это основано на моих предположениях=) просто ошибка типичная же для таких ситуаций..
1
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
12.08.2014, 12:32  [ТС]

Не по теме:


Thisman, используется:

JavaScript
1
td[name].style.background = '#'+ RGBtoHEX(R,G,B);



JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Упростил задачу...
var rainbow = {
        0: {    R:255,  G:255,  B:255},
        1: {    R:255,  G:0,    B:0},
        2: {    R:0,    G:255,  B:0},
        3: {    R:0,    G:0,    B:255},
        4: {    R:255,  G:255,  B:0},
        5: {    R:255,  G:0,    B:255},
        6: {    R:0,    G:255,  B:255}
    };
 
for(var name in td) {
    try { a += rainbow[y][R]; }
    catch(e) {
        alert('#1'+ e);
        
        try { a += rainbow[y]['R']; }
        catch(e) {
            alert('#2'+ e);
        
            try { a += rainbow[y].R; }
            catch(e) {
                alert('#3'+ e);
        
                try { a += rainbow.y.R; }
                catch(e) {
                    alert('#4'+ e);
                    
                    break;
                }
            }
        }
    }
}
 
alert(a); // Выводит: "undefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefined..."
Добавлено через 5 минут
z-z,
JavaScript
1
y++; // Увеличивается в случае если x == width=>16
JavaScript
1
2
3
4
5
6
7
// Теперь всё нормально:
 
for(k in td) {
    R = rainbow[y]['R'];
    G = rainbow[y]['G'];
    B = rainbow[y]['B'];
}
Добавлено через 6 минут
Возможно действительно ошибка была в y++;, но удивительно что при нумеровании проходов цикла - ошибка вылезла на первом проходе.

Спасибо большое!
0
Модератор
 Аватар для Thisman
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
12.08.2014, 12:51
Maksimchikfull, у тебя сами цвета хранятся в массиве!!
Объект имеет такой вид ( при коде , с помощью которого ты получаешь его )

JavaScript
1
2
3
4
5
6
7
8
9
rainbow = {
    0: [255,255,255],
    1: [255,0,0],
    2: [0,255,0],
    3: [0,0,255],
    4: [255,255,0],
    5: [0,255,255],
    6: [255,0,255]
}
делается это в строке :

JavaScript
1
new_rainbow[name] = colours[name].split(","); // split возвращает массив, а не объект
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.08.2014, 12:51
Помогаю со студенческими работами здесь

Сохранение свойств объекта после его обнуления
Всем привет. Использую cocos2d html5, язык js. Аналогом наследования служит то, что у создаю переменную слоя путем вызова функции extend...

Вызов свойств объектов из массива или объекта с параметрами
Допустим у нас есть несколько объектов: $.Nav = { init: function(){ return this; }, ...

Получить свойства объекта
Подскажите пожалуйста, можно ли таким образому полчить свойство "с" ? Если можно, то как правильно к нему обратиться в данноя примере? ...

Свойства унаследованного объекта
Привожу пример кода <script> var base={x:48}; var proiz=Object.create(base); document.writeln(proiz.x); ...

Не меняются свойства объекта
Добрый день. Возникла проблема следующего характера: Есть объект obj: var obj = { count : 0 } obj.f1 = function () {


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru