Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Трудности с глобальным массивом. / 6 сообщений из 6, страница 1 из 1
23.07.2009, 14:43
    #36105622
F4101
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трудности с глобальным массивом.
Приветствую.
Есть необходимость поправить чужие исходники. Исходный код формирует html-страницу используя xslt со скриптами на JavaScript. Требуется одной функцией заполнить массив, другой функцией вывести его на печать. Я так думаю - нужен глобальный массив. Реализация:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<msxsl:script language="JavaScript" implements-prefix="user">
<![CDATA[ 	
   var buf = new Array();	//глобальный массив

   function FillArray(sData){  //Заполнить глобальный массив
   	buf.push(sData);
       return "";
   }

   function PrintArray()  { //Напечатать глобальный массив
   	var tmp [];
   	var ret;
   	for(var i =  0 ; i < buf.length; i++)
   	   	tmp.push(buf[i]);
   	ret = tmp.join(",");
   	return ret;
   }
]]>

При попытке запуска - ошибка. Текст ошибки приводить не буду, т.к. она специфична для СЭД DocsVision (xslt - преобразование запускается из-под этот системы). В общем я проколбасился уже сутки и методом проб и ошибок пришел к выводу, что дело в "глобальности массива". Если сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
   function PrintArray()  {
   	 var buf = new Array();	  //массив уже локальный
         buf[ 0 ] = "a";
         buf[ 1 ] = "b";
         buf[ 2 ] = "c";
         
         ret = buf.join(",");
   	return ret;
   }
то все ок. Иными словами, если в одной и той же функции, локально объявить массив и тут же его напечатать, то все работает корректно. Более того! Опыт показал, что если к глобальному массиву обратиться с явным указанием индекса (str s = buf[1];) то тоже все работает. А если взять buf[i] - то уже ошибка. Замечу, что я столкнулся и с JavaScript и с xslt-преобразованиями 2 дня назад и сделал это впервые в жизни, поэтому прошу простить меня за возможные неточности в терминологии. Вообще я по жизни в JDEdwards программирую, просто всех программеров поувольняли кроме меня. Уверен, что на самом деле задача решается двумя "кликами", но так уж вышло, что это не моя специфика. Заранее благодарен за помощь. Гугл рыл. Sql.ru рыл. Explorer 6.
...
Рейтинг: 0 / 0
23.07.2009, 14:58
    #36105674
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трудности с глобальным массивом.
А что за строка такая:
Код: plaintext
var tmp [];
Если объявляешь массив, то надо
Код: plaintext
1.
2.
var tmp = [];
или
var tmp = new Array();
...
Рейтинг: 0 / 0
23.07.2009, 15:01
    #36105683
F4101
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трудности с глобальным массивом.
IDVsbruck,

IDVsbruckА что за строка такая:
Код: plaintext
var tmp [];
[/src]

Прошу прощения, конечно же знак равенства присутствует в исходном коде.. Просто уже в глазах рябит и даже копипастить нормально не могу. Плохой из меня индус).
...
Рейтинг: 0 / 0
23.07.2009, 15:08
    #36105708
F4101
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трудности с глобальным массивом.
Приведу на всякий случай текст ошибки:

Не удалось отобразить HTML представление.

Описание ошибки: (0x80020009) Ошибка выполнения Microsoft JScript
Недопустимое число аргументов или присвоение значения свойства
line = 56, col = 4 (line is offset from the start of the script block).
Error returned from property or method call.

(Конец сообщения об ошибке)

в моих исходниках line 52 содержит код:

Код: plaintext
1.
   ret = tmp.join(','); 
...
Рейтинг: 0 / 0
23.07.2009, 16:22
    #36105945
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трудности с глобальным массивом.
2 минуты в инете и 2 ссылки (надеюсь, помогут): раз и два
...
Рейтинг: 0 / 0
23.07.2009, 16:32
    #36105975
F4101
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Трудности с глобальным массивом.
IDVsbruck,

Нет, к сожалению не помогло. На первой ссылке был вчера, вторую прочел по вашей рекомендации. Продолжаю копать....
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Трудности с глобальным массивом. / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]