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

  • Автор темы KLif
  • Дата начала
K

KLif

#1
Приветы

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

Код:
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, вычисляется в агенте. В итоге на странице ошибка синтаксиса ... как здесь правильно расставить кавычки? и вообще можно ли так писать?
 

Omh

Lotus team
04.07.2007
2 210
1
#2
"|" - говняный ограничитель стороки.
Я за " - в простых случаях.
И за {} - в сложных.
 
K

KLif

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

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

Код:
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?
 

Omh

Lotus team
04.07.2007
2 210
1
#4
Во! Стало читабельнее.
Но в решении проблемя я не помощник :(
 
S

Sandr

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

Omh

Lotus team
04.07.2007
2 210
1
#6
Sandr
Да ладно!
Я всё жизнь строки при помощи "+" делал.
"&" даёт сомнительное преимущество, что можно не приводить части будущей строки к типу string.
 
K

KLif

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

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

KLif

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#10
Смотри синтаксис JS. У тебя это после каждой строки.

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

Sandr

#11
точки с запятой в конце каждой строки поставить надо
 
S

Sandr

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

Еще вариант:
stable у Вас мождет содержать кавычки, поэтому в самом скрипте кавычки переделайте на одинарные кавычки.
 
K
#15
Да всё так, агент во фрейме ... принтится тамже, поэтому и нужен window.parent ...

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

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

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

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

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

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

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

Sandr

#17
или
Код:
Print { <script>
var sp = window.parent.document.getElementById("sr");
sp.style.display = "none";
sp.innerHTML = '} + stable + {';
sp.style.display = "inline";
</script> }
 
K
#18
Спасибо, вы меня спасли :) .... оба варианта работают :)