Официальный сайт студ.городка НГТУ
Программирование и БД » [JavaScript, XML] проблема передачи параметра в функцию JS 

#1  21.07.06 10:54

asp
Профиль

[JavaScript, XML] проблема передачи параметра в функцию JS

Совсем плохой стал...
Задача - обработать XML с использованием XSLT
Все проходит замечательно, если не считать одного "но". В XML файле есть параметр, хранящий число в виде строки. Логически это число обозначает сумму и в зависимости от контекста может изменять вид с "12300" на "123-00" или "123руб.00коп." или "123,00". Для такого преобразования используется функция на JavaScript в этой самой XSLT. Параметры функции: сама строка и индекс, согласно которому нужно преобразовать (1 - вставить "-", 2 - вставить "руб" и "коп" и т.д. Поскольку не смог сладить, убил вообще все тело функции.
Во всех дальнейших экспериментов вызов одинаков: в теле XSLT

Код: XML:

<xsl:value-of select="usr:strSum(@Sum, 1)"/>

Обрабатываемая XML содержит

Код::

 Sum="93000"

Эксперимент1. Сама функция:

Код: JScript:

function strSum(summa, i)
   {
      return summa;
   }

Результат в поле, где отображается сумма:

93000

Комментарий: работает... Хорошо.

Эксперимент2. Сама функция:

Код: JScript:

function strSum(summa, i)
   {
      z = summa;
      return z;
   }

Результат в поле, где отображается сумма:

93000

Комментарий: надо же, тоже работает...


Эксперимент3. Сама функция:

Код: JScript:

function strSum(summa, i)
   {
      z = summa + 1;
      return z;
   }

Результат в поле, где отображается сумма:

1

Комментарий: ой, как это?

Эксперимент4. Сама функция:

Код: JScript:

function strSum(summa, i)
   {
      z = "abc" + summa + "def";
      return z;
   }

Результат в поле, где отображается сумма:

abcdef

Комментарий: ?!

Вопрос: Куда девается значение summa и как же все-таки его заполучить для последующей обработки?

Код а-ля

Код::

			str = "";
			if ( summa.length > 2 ) str = summa;
			switch (summa.length)
			{
				case 1 : str = "00" + summa;
					break;
				case 2 : str = "0" + summa;
					break;
			}
			switch (i)
			{
				case 1 : str = str.substring(0, str.length - 2) + "-" + str.substring(str.length - 2, str.length); //(999-99)
					break;
				case 2 : str = str.substring(0, str.length - 2) + " руб." + str.substring(str.length - 2, str.length) + " коп."; //(999руб.99коп.)
					break;
				case 3 : str = str.substring(0, str.length - 2) + "." + str.substring(str.length - 2, str.length); //(999.99)
					break;
			}
			return str;

работает на "отлично", если в его начале поставить

Код::

summa = "123456";

или 

summa = 123456;
summa = "" + summa;

Исправлено asp (21.07.06 10:55)

Offline

#2  25.07.06 22:45

asp
Профиль

Re: [JavaScript, XML] проблема передачи параметра в функцию JS

Интересующимся: выкрутился с помощью

Код::

summa = summa[0].value

Обалдел от такого решения :(

Offline

Программирование и БД » [JavaScript, XML] проблема передачи параметра в функцию JS 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.083 сек.
Выполнено 11 запросов.