webew
Войти » Регистрация
 
JavaScript

Знатоки, как ввести текст в функцию?

28 октября 2008, 19:58
Автор: yak2689
Есть переменная, содержащая текст (несколько строк с CR-ами в конце).
Как ее ввести в JavaScript-функцию в качестве параметра?
При "лобовом" подходе получается (например):
function("aaaaa
bbbb"), что никак не проявляется в теле функции.
--------
rgbeast & bur, спасибо за скорый отклик, но,кажется я не совсем внятно
изложил свою проблему. Уточняю - текстовая переменная - это то, что
формируется не мной, а присылается мне с сервера и задача как раз
заключается в том, чтобы с помощью некой фукции разобраться, где там
\r, где <br> ...., а для этого ее нужно в эту функцию как-то втащить.
Конкретно, переменная обозначена как {message} и, будучи поставленной
в любое (разумное, конечно) место HTML-кода, она выдает на монитор свое
текстовое содержимое. Вот 2 примера:
(1)
{message}=bgjkjhkl.lll |#56:
На экране вставка {message} в HTML-код показывает:
bgjkjhkl.lll |#56
Этот результат получается и в записи:
<SCRIPT language="javascript" type="text/javascript">
document.write(Txt2htm("{message}"));
(2)
На экране вставка {message} в HTML-код показывает:
jjjjjjjjjjjjjjjjjj
<br>jgggggggggggggggggg
а в записи:
<SCRIPT language="javascript" type="text/javascript">
document.write(Txt2htm("{message}")); - полный провал!


Добавить комментарий
Отображение комментариев: Древовидное | Плоское
NO USERPIC

rgbeast

С помощью спецсимвола \n:
"aaaaa\nbbbb"
28.10.2008, 20:10
Ответить
NO USERPIC

yak2689

Большое спасибо! - см. дополненный исходный текст.
29.10.2008, 04:39
Ответить

bur

Если удобно обозначать переносы строк в виде \n (как написал rgbeast) делайте так.

Если же необходимо отдать именно многострочный исходный текст, то переносы строк нужно экранировать слешом:
function a(text) {
   alert(text);
}
a("aaaaa\
bbbb"
);


28.10.2008, 22:29
Ответить
NO USERPIC

yak2689

Большое спасибо! - см. дополненный исходный текст.
29.10.2008, 04:40
Ответить
NO USERPIC

rgbeast

В таком случае не вставляйте ее внутрь Javascript. Вставьте {message} в отдельный <div>{message}</div>, а затем в JS вытащите содержимое этого div
29.10.2008, 13:06
Ответить
NO USERPIC

yak2689

Спасибо! Ничего не получается и, кроме того, я не могу ставить {message} в к.л. блок без
HIDDEN-условия (он начинает работать на экран, а мне нужно модернизированное содержание).
Поэтому, вроде как только через форму, но полный обвал!!! Что только не пробовал.
Вот последний тест:
<div class="inputtext">
<form action="this" name="form1" method="post" target="_self">
<input name="text" type="hidden" value="StartVal" class="inputtext" />
<SCRIPT language="javascript" type="text/javascript">
<!--
alert("Control="+"{MESSAGE}");
alert(this.document.form1.text.value);
//-->
</script>
</form>
</div>
Первый alert реагирует только на строки, а 2-ой показывает только ="StartVal"!
Форма в данном контексте не работает ... всего не рассказать. Меня смущает одно:
переменная, примитивно-удобная в HTML-коде как-то неочевидно д.б. использована
с JS.
Еще раз спасибо, извините за беспокойство.
29.10.2008, 17:05
Ответить

bur

Я так понял, суть задачи в том, чтобы яваскриптом ухватить многострочный HTML-код, который отдается переменной шаблонизатора {MESSAGE}. Делаем так:

<!-- загоняем html-код в отдельный контейнер DIV -->
<div id="divId">{MESSAGE}</div>
<script type="text/javascript">
// Обращаемся к искомому HTML-коду с помощью свойства innerHTML
alert(
     document.getElementById('divId').innerHTML
);
// Должно сработать
</script>


А что, на "народе" появился встроенный шаблонизатор и возможность работы со структурами данных?
29.10.2008, 17:40
Ответить
NO USERPIC

yak2689

Правильно, но "ухватить многострочный HTML-код, который отдается переменной шаблонизатора {MESSAGE}"
БЕЗ ОТОБРАЖЕНИЯ ЕГО НА ЭКРАНЕ, что делает строка <div id="divId">{MESSAGE}</div>.
Спасибо за участие и беспокойство.
P.S.
О "народе" - как я (чайник в этих вопросах) понимаю, определенный инструментарий для
сайтостроения они предоставляют ( http://narod.yandex.ru/help/00/ gb), но специализированной
ПЕРЛ-овой базы данных у "народа" нет.
29.10.2008, 18:41
Ответить

bur

Можно это ДИВ скрыть стилями, тогда его не будет видно на экране. Вот так:

<div id="divId" style="display:none;">{MESSAGE}</div>


Сойдет?
29.10.2008, 18:42
Ответить
NO USERPIC

yak2689

Спасибо! - буду пробовать!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Первое УРА! Текст берет (с причиндалами типа шрифта, цвета..., но обрезать, думаю, можно будет),
но есть серьезное НО - хватает только 1-ю {MESSAGE}, а следующие игнорирует, оставаясь с первым
текстом (alert("Control="+"{MESSAGE}"); меняет содержание при каждом новом {MESSAGE}).
Существует механизм для выталкивания Предыущего Последующим?
Спасибо - есть предмет для конкретной работы! 29.10.2008, 20:13
29.10.2008, 18:55
Ответить
NO USERPIC

rgbeast

Не понял что имеется в виду под предыдущим и последующими MESSAGE
30.10.2008, 00:12
Ответить
NO USERPIC

yak2689

Я Вам вопрос - это {MESSAGE} №1 (предыдущий)
Вы мне ответ - это {MESSAGE} №2 (последующий)
.... у нас уже "куча" {MESSAGE}-ов!
В каждом {MESSAGE} м.б. несколько строк и м.б. вставки типа |#nn.
Каждый {MESSAGE} надо прочитать и заменить вставки текстом типа
<img src="..........SMnn.gif />.
{MESSAGE}-ы поступают от сервера единым потоком.
30.10.2008, 08:57
Ответить
NO USERPIC

rgbeast

А куда эти месседжи поступают? Я так понимаю речь идет об HTML. Как выглядит HTML?
30.10.2008, 10:21
Ответить
NO USERPIC

yak2689

Через HTML на монитор/дисплей,конечно. См. ( http://yak2689.narod.ru/ ).
30.10.2008, 12:49
Ответить
NO USERPIC

rgbeast

Да уж, сложную Вы выбрали задачу - на народе запрограммить сайт. Что мешает каждый алерт заменить на div, а общим JS все вывести? Получить массив элементов div можно с помощью функции getElementsByTagName()
30.10.2008, 13:01
Ответить
NO USERPIC

yak2689

1. ОДИН алерт выводит ВСЕ сообщения (однострочные), Див только ОДНО(любое)!
2. Количество сообщений не определено и м.б. очень большим.
3. Див, кроме полезной информации содержит "мусор".
Вопрос: как правильно написать скрипт-заголовок для яыка "С"?
М.б. {MESSAGE} можно будет передать в знаковый массив.
30.10.2008, 13:51
Ответить
NO USERPIC

rgbeast

Усложнение очевидно на начальном этапе. Вы пытаетесь заставить JS делать то, для чего должны быть серверные скрипты. Что требуется написать на С?
30.10.2008, 14:03
Ответить
NO USERPIC

yak2689

В "жизни" вместо алертов будет работать ф. Txt2hdl({MESSAGE}) - вот она и будет на Си.
30.10.2008, 14:09
Ответить
NO USERPIC

rgbeast

Си выполняется на стороне сервера. В этом случае как это связано с Javascript, который работает на стороне клиента?
30.10.2008, 14:13
Ответить
NO USERPIC

yak2689

Cпасибо - это для меня новость.
30.10.2008, 15:15
Ответить
NO USERPIC

rgbeast

Мастер Фу и консультант по методологии

Когда Мастер Фу и его ученик Ньюби посещали святые места, по вечерам Мастер Фу имел обыкновение выступать перед неофитами Unix тех городов и сел, где они останавливались на ночлег.
Однажды среди тех, кто собрался его послушать, оказался консультант по методологии.
"Если при доводке вы не профилируете регулярно ваш код в поисках узких мест, то вы уподобляетесь рыбаку, которые закидывает сеть в озеро, в котором нет рыбы," - сказал Мастер Фу.
"Не верно ли тогда и то, - сказал консультант по методологии, - что если вы не замеряете постоянно вашу производительность при управлении ресурсами, то вы уподобляетесь рыбаку, которые закидывает сеть в озеров, в котором нет рыбы".
"Однажды я встретил рыбака, котоырй только что уронил сеть в озеро, по которому плыла его лодка, - сказал Мастер фу. - Он долго шарил по дну лодки, пытаясь найти ее".
"Но если он уронил свою сеть в озеро, - сказал консультант по методологии, - то почему он искал ее в лодке?"
"Потому, что он не умел плавать", - ответил Мастер Фу.
Услышав это, консультант достиг просветления.

30.10.2008, 15:21
Ответить
NO USERPIC

yak2689

bur, Спасибо!
ВАШИ подсказки полностью приняты!
Конкретно - работает код:
<!-------------------------------------------------------------------->
<div id="{JSDATE}" style="display:none;">"{MESSAGE}" </div>
<SCRIPT language="javascript" type="text/javascript">
<!--
WrDo(Txt2htm(ExtractText(document.getElementById("{JSDATE}").innerHTML)));
//-->
</SCRIPT>
<!-------------------------------------------------------------------->
Пока все работает отлично!
Еще раз - Большое Вам СПАСИБО и замечательной жизни!
01.11.2008, 09:43
Ответить

bur

Уфф, рад что у вас наконец всё заработало :-)
05.11.2008, 11:47
Ответить
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
© 2008—2017 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100