Программирование >>  Руководство по созданию web приложений 

1 ... 18 19 20 [ 21 ] 22 23 24 ... 141


Здесь parent ссылается на объект, который является родительским по отношению кдокументу HTML, содержащему сценарий. В данном случае это окно, в котором отображаются все наши фреймы.

Для чтения содержимого поля decValue применяется аналогичная техника:

szOlcl = parent, riainpage.cloouient. fpris[ii],clec¥aiije. value;

Обратите внимание, что для текстового поля hexValue мы i обработчик событий onFocus. Он получает управление, когда пользователь передает полю фокус ввода. Задача обработчика заключается в том, чтобы снова фокус ввода, предотвратив непосредственное редактирование числа пользователем.

Теперь о том, как выполняется ввод преобразуемых десятичных чисел.

С каждой из кнопок, связанной с вводом десятичного числа, связан обработчик события опСИск, вызывающий функцию , например; INPUT TrPE= Duttori ШЕ=3- VALUE= 3 ,

Этой функции передаются два параметра - нажатая кнопка (как объект класса button) и форма, в которой эта кнопка находится:

function putNuiaerfbtn, form) I

var szOld = ; var =

(cm, стр.)

Форма определена следующим образом:

<form <table>

SI2E= 20 ijnFot-ys= tili6.blijr(); >

<t </bx/tdxtd>

</t!j></tr>

</form>

Для поля исходного десятичного числа при помощи параметра NAME мы задали имя cJecValijti Utijv результата называется heKValue. Эти имена используются сценарием JavaScript для адресации наших полей.

Документ toc.html (листинг 2-13) содержит форму с кнопками и функции сценария.

Листинг 2-13 Вы найдете в файле ch§2/Converterftoc,litml на прилагаемом к книге компакт-диске.

Рассмотрим работу -- :в нашем легятнию fiiecTiia;i,HrtrepH4iioM нрсьГи разователе.

особенность этого приложения - то, что поля для ввода и отображения преобразуемых чисел располагаются в разных документах HTML, загруженных в отдельные фреймы.

Для того чтобы ... ноля hexValue и decValue, мы ссыла-

емся на форму, расположенную внутри фрейма ; :



= falst;

. : ,: value;

. . = nCurrent;

Задача функции pytlluiber - ииил числа и его отображение в двух текстовых полях, расположенныхв верхней части калькулятора:

function pitiymbeiihtn,fori)

var szOld = ; var szNew

if(DNeiii(Hai

parent i.cloeuient.foris[0].bexValuB.¥alae =

parent i a. tioeuient. тогвз[0]. decValue. valoe = ;

bNewNul : I alse;

szOld

szNew . :: ,

nCurriMU : . , i.-.

naren : - .alue.vBlye = nCurrent;

В самом начале своей работы функция putNumber проверяет двоичную переменную пеипишЬег. Если ее значение равно true, пользователь может ввести первую цифру нового числа, в этом случае функция putNumber обнуляет содержимое текстовых полей hexValue и а а также устанавливает значение newnumber, равное false.

Далее функция проставляет пользователем цифру перед перемен-

ной szOld, равной текущему .; . .. .-из поля decValue. При этом она вызывает из класса String метод concat, предназначенный для слияния (конкатенации) строк.

Па следующем этапе текущее :яшче11не вычисляется функцией eval. Эта функция пытается интерпретировать текстовую строку, переданную ей в качестве параметра, как арифметическое выражение, возвращая результат интерпретации в виде численного значения. Результат сохраняется в переменной nCurrent и отображается в текстовом поле decValue.

Функция getResult, выполняющая преобразо-

вание, получает исходное число из поля decValue и - - функцииdec2aex

преобразования записывается затем в поле hexValue: function legylt(fori) t

parent.matnpage- docianenI. fariis[0]- tajxValae value =



iiripage, aocLienr, ffirBsLO]. decValue va] ue);

Рассмотрим функцию clecZhex, преобразующую десятичное число в iiicrrna/i Результат преобразования эта функция возвращает в виде текстовой строки:

fuiiH ii .

var 8гН9дТ1Ыв= 012345в789йВСР1:Г- : var -

var . и;

war bNegative=false;

if(nD#c < 0) {

bMefatlve-t-ue: nDec = -nDec;

iflip=nOec;

whileCtrue) I

nRem = riTip i 16; pTi-p = iiTmp / 16:

,1, < 16)

break;

szluf-saHexTaole. cfiarAtCnRem): szResult = szByf.concat(8zFle8ujt); nTmp = Hath. tioor{nTiip/;

szResult =

: != 0)

szei.if=sii . ip); szResult =

== true) return (-- + szResult); else

return szResult;

В начале своей работы функция dec2hex проверяет знак числа.

Отрицательные числа преобразуются в положительные. При этом в переменную bNegative true.



1 ... 18 19 20 [ 21 ] 22 23 24 ... 141

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика