Просмотр полной версии : Как сделать проверку на существование элемента массива?
Vindenta
11.01.2011, 19:50
Уважаемые Flasherы нужна ваша помощь!Подскажите как сделать проверку на существование элемента массива?
Пытался сделать проверку но она неверная...Нужно просто сложить существующие элементы массива.
while(i<21){
if(ID1BCorrector[i][3]!= undefined){
trace(ID1BCorrector[i][3]);
Bpoint=Bpoint+Number(ID1BCorrector[i][3]);
b_rezult.id1_Bpoint.text=Bpoint.toString();
}
i++;
};
if (ID1BCorrector[i][3]) {
Особо в код не вникал, но вообще вот так.
Vindenta
11.01.2011, 20:14
TypeError: Error #1010: Термин не определен и не имеет свойств.
at SocketNetworkConnectionAdmin_fla::MainTimeline/onPublicMessage()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at it.gotoandplay.smartfoxserver.handlers::SysHandler/handlePublicMessage()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at it.gotoandplay.smartfoxserver.handlers::SysHandler/handleMessage()
at it.gotoandplay.smartfoxserver::SmartFoxClient/xmlReceived()
at it.gotoandplay.smartfoxserver::SmartFoxClient/handleMessage()
at it.gotoandplay.smartfoxserver::SmartFoxClient/handleSocketData()
Выдает ошибку...
Bpoint=0;
while(i<21){
if (ID1BCorrector[i][3]) {
Bpoint=Bpoint+Number(ID1BCorrector[i][3]);
b_rezult.id1_Bpoint.text=Bpoint.toString();
}
i++;
}
Это уже нужно у вас спросить, чего у вас там происходит. Код к ошибке не относится в рамках той информации, что вы предоставили.
Vindenta
11.01.2011, 20:22
Дело в в том, что я получаю данные через сокет сервер, в элементе массива ID1BCorrector[i][3] сохраняеться набранный балл, всего 20 заданий,и пользователь может их выполнять в любом порядке,т.е заполнение массива будет не последовательным ,а например пользователь ответил на 5 вопрос и получается массив
ID1BCorrector[5][3] будет заполнен,но остальные элементы еще не существуют...Поэтому мне нужно складывать значения уже существующих элементов массива...А ошибка возникает лишь при выполнении цикла приведенного выше..
Я там ошибки не вижу.
Нормально оно выглядит вот так:
Bpoint = 0;
while (i < 21) {
if (ID1BCorrector[i][3]) {
Bpoint += Number(ID1BCorrector[i][3]);
b_rezult.id1_Bpoint.text = "" + Bpoint; // это смущает,
// у b_rezult есть свойство id1_Bpoint?
}
i++;
}
Vindenta
11.01.2011, 22:22
b_rezult этом символ где хранится текстовое поле id1_Bpoint,а данная проверка не работает ,если один из элементов массива не существует...Т.е если заполняется ID1BCorrector[5][3] ,цикл застопоривается на проверке ID1BCorrector[0][3],возникает ошибка приведенная выше.Как еще можно исключить несуществующие элементы массива,кроме того ,как им присвоить значение 0 или undefined?
Ошибка указывает на вот это:
at SocketNetworkConnectionAdmin_fla::MainTimeline/onPublicMessage()
По-моему, у вас в момент проверки в ID1BCorrector[0][3] что-то лежит такое непонятное. То есть, этот элемент массива не null. Я лично не вижу ошибки в коде.
Vindenta
11.01.2011, 22:58
Ошибку решил:
var j=0;
Bpoint=0;
while(j<21){
if(ID1BCorrector[j] !=undefined){
if(ID1BCorrector[j][3] != undefined){
Bpoint+=Number(ID1BCorrector[j][3]);
b_rezult.id1_Bpoint.text=Bpoint.toString();
};
}
j++;
}
Дело в в том, что я получаю данные через сокет сервер, в элементе массива ID1BCorrector[i][3] сохраняеться набранный балл
http://tsya.ru/
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.