Присваевание в агенте

Тема в разделе "Lotus - Программирование", создана пользователем KLif, 6 мар 2008.

  1. KLif

    KLif Гость

    Приветы

    Столкнулся с какой то ерундой, причём в JS какая то странная система раставления всех этих скобок ... ужас

    Код (Text):
    Print | <script>
    var sp = window.parent.document.getElementById("sr")
    sp.style.display = "none" |

    Print |     sp.innerHTML = | + stable

    Print |     sp.style.display = "inline"
    </script> |
    Ругается на строчку sp.innerHTML = | + stable, где stable - string, вычисляется в агенте. В итоге на странице ошибка синтаксиса ... как здесь правильно расставить кавычки? и вообще можно ли так писать?
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    "|" - говняный ограничитель стороки.
    Я за " - в простых случаях.
    И за {} - в сложных.
     
  3. KLif

    KLif Гость

    Немного в другом дело ...

    1. если я возьму

    Код (Text):
    dim t as string
    t = "123"

    Print { <script>
    var sp = window.parent.document.getElementById("sr")
    sp.style.display = "none"
    sp.innerHTML = } + t + {
    sp.style.display = "inline"
    </script> }
    То в спане будет 123

    2. строка stable собиралась в опр функции, "<td><font size=-1><b>" + dlistname(i) + "</b></font></td>" - пример заполнения stable и в конечном итоге в stable хранится таблица, которую нужны выкинуть на форму

    Чем тогда stable отличается от t?
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Во! Стало читабельнее.
    Но в решении проблемя я не помощник :(
     
  5. Sandr

    Sandr Гость

    Вместо "+" напишите "&" :( Конкатенация строк в LS не плюслм делается :(
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Sandr
    Да ладно!
    Я всё жизнь строки при помощи "+" делал.
    "&" даёт сомнительное преимущество, что можно не приводить части будущей строки к типу string.
     
  7. KLif

    KLif Гость

    Да, что "+" что "&" ... всё одно ...

    1. Если я просто сделаю Print stable, то таблица нормально выведется на экран, только вот находиться будет во фрейме (туда грузится агент) ... может в ней быть что-нибудь, что может помешать присвоению в innerHTML ?
     
  8. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Может кавычки нужны?
     
  9. KLif

    KLif Гость

    при выставлении кавычек, вылезает другая ошибка, что не хватает ";" ... только вот непонятно где ...
     
  10. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Смотри синтаксис JS. У тебя это после каждой строки.

    Т.е.:
    Код (Text):
    Print { <script>
    var sp = window.parent.document.getElementById("sr");
    sp.style.display = "none";
    sp.innerHTML = "} + stable + {";
    sp.style.display = "inline";
    </script> }
     
  11. Sandr

    Sandr Гость

    точки с запятой в конце каждой строки поставить надо
     
  12. KLif

    KLif Гость

    Нет и не в этом дело ....
     
  13. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Какая ошибка?
     
  14. Sandr

    Sandr Гость

    Так.. судя по скрипту, он принтится в агенте, который запускется по урлу из iframа, если нет, то зачем тогда window.parent?
    проверте в скрипте наличие объекта sp и добавте try catch

    Еще вариант:
    stable у Вас мождет содержать кавычки, поэтому в самом скрипте кавычки переделайте на одинарные кавычки.
     
  15. KLif

    KLif Гость

    Да всё так, агент во фрейме ... принтится тамже, поэтому и нужен window.parent ...

    Попробую ещё раз обяйснить что я делал для тестов и т.д.

    1. stable - строка с таблицей, при Print stable таблица выводится во фрейм (если проблема не решится, наверно сделаю этот фрейм видимым, причешу и пользователь будет его видеть - это как один из выходов)

    2. если stable выкидывать в спан, но выдаётся ошибка "Ошибка в синтаксисе"

    3. если stable заменить на какую нить переменную, определённую тутже и присвоить ей что нить подобное "wefqwfqwef", то скрипт сработает нормально и в спане будет это значение

    разницу между этими переменными не вижу, обе string ... а string он и в афирке стринг ....

    4. все вещи с кавычками и ";" не помгают
    5. если считать что разница между t = "345345345" и мой переменной stable в начилии ", то при добавлении в sp.innerHTML = "} + stable + {" выдаётся ошибка что не зватает ";", но опять же это видимо не в сприпте а в самом значении моей переменной string - а это вообще будет бред, потому что переменная типа стринг, какая разница какое она принимает значение ...

    Да действительно, у меня в stable есть " кавычки ...
     
  16. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Замени.
    Код (Text):
    sp.innerHTML = "} + Replace(stable; {"}; {'}) + {";
     
  17. Sandr

    Sandr Гость

    или
    Код (Text):
    Print { <script>
    var sp = window.parent.document.getElementById("sr");
    sp.style.display = "none";
    sp.innerHTML = '} + stable + {';
    sp.style.display = "inline";
    </script> }
     
  18. KLif

    KLif Гость

    Спасибо, вы меня спасли :) .... оба варианта работают :)
     
Загрузка...

Поделиться этой страницей