Серверный JavaScript 1.4. Руководство по использованию

       

Обратные Кавычки


Используйте обратные кавычки (`) для выделения выражений серверного JavaScript как заместителей для имён атрибутов или значений атрибутов HTML. JavaScript, внедрённый в HTML с помощью обратных кавычек, автоматически генерирует HTML; Вам не нужно использовать write.

В целом тэги HTML имеют форму:

<TAG ATTRIB="value" [...ATTRIB="value"]>

где ATTRIB  это атрибут, а "value

" это его значение. Значение в угловых скобках означает, что допускается любое количество пар атрибут/значение.

Если в обратные кавычки заключено выражение JavaScript, используемое как значение атрибута, машина выполнения JavaScript автоматически добавляет знак кавычки вокруг всего значения. Вы сами не вводите знаки кавычек, хотя Вам это может понадобиться для разграничения строковых литералов выражения, как в следующем примере. Машина выполнения не делает это для имён атрибутов, поскольку не предполагается заключение имён атрибутов в кавычки.

Например, рассмотри следующую строку из образца-приложения Hangman:

<IMG SRC=`"images\hang" + client.num_misses + ".gif"`>

Эта строка динамически генерирует имя изображения на основе значения client.num_misses. Обратные кавычки обрамляют выражение JavaScript, конкатенирующее строку "images\hang" и целочисленное значение client.num_misses и строку ".gif", давая строку типа "images\hang0.gif". Результатом будет HTML, такой как

<IMG SRC="images\hang0.gif">

Порядок ввода кавычек является критичным. Сначала идёт обратная кавычка, указывая, что следующее значение является выражением JavaScript, состоящим из строки ("images\hang"), соединяемой с целым числом (client.num_misses) и с другой строкой (".gif"). JavaScript конвертирует всё выражение до строки и добавляет необходимые знаки кавычек вокруг значения атрибута.

Вы должны внимательно использовать знаки двойных кавычек внутри обратных кавычек, поскольку содержащееся внутри них значение интерпретируется как литерал. Поэтому не окружайте выражения JavaScript, которые необходимо вычислить, знаками кавычек. Например, если значение свойства client.val будет NetHead, то данный оператор:




<A NAME=`client.val`>

генерирует такой HTML:

<A NAME="NetHead">

но следующий оператор:

<A NAME=`"client.val"`>

генерирует HTML:

<A NAME="client.val">

В качестве другого примера приведём два атрибута тэга ANCHOR - HREF и NAME. HREF делает тэг гиперссылкой, а NAME делает его именованным якорем. Следующие операторы используют переменную choice для установки свойств attrib и val объекта client и создают затем гиперссылку/hyperlink или цель/target, в зависимости от значений:

<SERVER>
if (choice == "link") {
   client.attrib = "HREF";
   client.val = "http://www.netscape.com";
}
if (choice == "target") {

   client.attrib = "NAME";
   client.val = "NetHead";
}

</SERVER><A `client.attrib`=`client.val`>Netscape Communications</A>

Если значением choice будет "link", результат будет:

<A HREF="http://home.netscape.com">Netscape Communications</A>

Если значением choice будет "target", результат будет:

<A NAME="NetHead">Netscape Communications</A>


Содержание раздела