#1 21.07.06 10:54
[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

