Парсер файла
Здравствуйте!
имеется такой вот код, она парсит файл, узнает значение атрибута CONDITION_ID и в зависимости от значения должен присвоить значение переменной KALITKA, но почему-то значение калитке не присваивается ... подскажите почему такое может быть? разбираемый файл http://portal.sibprofi-web.ru/import/%D0%9E%D0%9E%D0%9E_%D0%92%D1%85%D0%BE%D0%B4%D0%BD% D1%8B%D0%B5%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1 %8B__4493_%D0%A1%D0%92.xml function Parse_GatesCust(){ ConnectToFile(); SECT_GATESn = xmlDoc.documentElement.lastChild.firstChild.lastChild.childNodes; for (var i = 0; i < SECT_GATESn.length; i++){ WIDTH = (SECT_GATESn[i].getAttribute("WIDTH").replace(",","."))*1000; HEIGHT = (SECT_GATESn[i].getAttribute("HEIGHT").replace(",","."))*1000; COLOR = SECT_GATESn[i].getAttribute("COLOR"); if(COLOR == "Dark Oak" || COLOR == "Golden Oak"){COLOR = "RAL Oak";} else{if(COLOR == "ADS703"){COLOR = "RAL S703";}} COM_SECT_ITEMS = SECT_GATESn[i].getElementsByTagName("Com_Sect_Items"); for (var j = 0; j < COM_SECT_ITEMS.length; j++){ CONDITION_ID = COM_SECT_ITEMS[j].getAttribute("CONDITION_ID"); if(CONDITION_ID == 31 || CONDITION_ID == 206 || CONDITION_ID == 512){ KALITKA = "К, "; } else{ KALITKA = ""; } } NAME = "Ворота секционные СПР " + WIDTH + "x" + HEIGHT + ", " + KALITKA + COLOR; console.log(NAME); //document.getElementById('positions_list').innerHTML += NAME + '<br>'; } |
никто не знает?
|
Цитата:
|
for (var j = 0; j < COM_SECT_ITEMS.length; j++){ CONDITION_ID = COM_SECT_ITEMS[j].getAttribute("CONDITION_ID"); if(CONDITION_ID == 31 || CONDITION_ID == 206 || CONDITION_ID == 512){ KALITKA = "К, "; } else{ KALITKA = ""; } //здесь например } если выводим KALITKA здесь, т.е. в этом же цикле, тогда значение калитке присваивается а если начинаем выводить за пределами цикла, то не присваивается пробовал объявить переменную KALITKA до цикла, но все равно не присваивает что-то уже и не знаю, как тестировать, от того и обратился сюда :) мне всего-то нужно узнать ставить "К, " SECT_GATESn[i] или нет :( |
Цитата:
KALITKA = "нет значения"; for (var j = 0; j < COM_SECT_ITEMS.length; j++){ CONDITION_ID = COM_SECT_ITEMS[j].getAttribute("CONDITION_ID"); if(CONDITION_ID == 31 || CONDITION_ID == 206 || CONDITION_ID == 512){ KALITKA = "К, "; } else{ KALITKA = ""; } //здесь например } alert(KALITKA); Что будет в алерте? |
Цитата:
|
Цитата:
KALITKA = "нет значения"; for (var j = 0; j < COM_SECT_ITEMS.length; j++){ CONDITION_ID = COM_SECT_ITEMS[j].getAttribute("CONDITION_ID"); if(CONDITION_ID == 31 || CONDITION_ID == 206 || CONDITION_ID == 512){ KALITKA = "К, "; } else{ KALITKA = "берет это значение"; } } alert(KALITKA); выводит последнее значение калитки (KALITKA = "берет это значение";) Цитата:
|
Denis_Artamonov, ты вообще понимаешь функциональность своего кода?
У тебя в цикле при каждой итерации что-то присваивается той "калитке"... Вот иллюстрация KALITKA = ""; for (var j = 0; j < COM_SECT_ITEMS.length; j++){ CONDITION_ID = COM_SECT_ITEMS[j].getAttribute("CONDITION_ID"); if(CONDITION_ID == 31 || CONDITION_ID == 206 || CONDITION_ID == 512){ KALITKA = KALITKA+"К, "+'/'; } else{ KALITKA = KALITKA+""+'/'; } //здесь например } alert(KALITKA); Ты вообще, что хочешь получить в итоге? Поскольку менять в цикле значения "шило" на "мыло" в некой переменной бессмысленно. |
function Parse_GatesCust(){ ConnectToFile(); SECT_GATESn = xmlDoc.documentElement.lastChild.firstChild.lastChild.childNodes; for (var i = 0; i < SECT_GATESn.length; i++){ WIDTH = (SECT_GATESn[i].getAttribute("WIDTH").replace(",","."))*1000; HEIGHT = (SECT_GATESn[i].getAttribute("HEIGHT").replace(",","."))*1000; COLOR = SECT_GATESn[i].getAttribute("COLOR"); if(COLOR == "Dark Oak" || COLOR == "Golden Oak"){COLOR = "RAL Oak";} else{if(COLOR == "ADS703"){COLOR = "RAL S703";}} COM_SECT_ITEMS = SECT_GATESn[i].getElementsByTagName("Com_Sect_Items"); for (var j = 0; j < COM_SECT_ITEMS.length; j++){ CONDITION_ID = COM_SECT_ITEMS[j].getAttribute("CONDITION_ID"); if(CONDITION_ID == 31 || CONDITION_ID == 206 || CONDITION_ID == 512){ KALITKA = "К, "; } else{ KALITKA = ""; } } NAME = "Ворота секционные СПР " + WIDTH + "x" + HEIGHT + ", " + KALITKA + COLOR; console.log(NAME); //document.getElementById('positions_list').innerHTML += NAME + '<br>'; } хочу поставить букву "К", если хотя бы один атрибут CONDITION_ID у узла SECT_GATESn равен (31, 206, 512) |
Цитата:
Ты присваиваешь значение переменной в каждой (!) итерации цикла. Это тебе понятно? |
Часовой пояс GMT +3, время: 21:18. |