JavaScript: Objek
8.1 Pengantar
Bab ini akan menyajikan pemahaman yang
lebih formal tentang objek. Akan dimulai dari pengenalan konsep orientasi
objek. Bab ini juga akan membahas beberapa objek built-in JavaScript dan
mendemonstrasikan kapabilitasnya.
8.2 Pengenalan Teknologi Objek
Bagian ini akan memberikan pengenalan
umum tentang orientasi objek. Terminologi di sini akan mendukung beberapa bab
ke depan. Di sini, Anda akan belajar bahwa objek merupakan cara berpikir
alamiah tentang dunia dan tentang skrip yang memanipulasi dokumen XHTML. Pada
Bab 4-8, Anda telah menggunakan dua objek JavaScript built-in, yaitu objek Math dan Array. Anda juga telah mengetahui dua objek yang disediakan oleh
penjelajah web, document dan window, untuk melakukan pekerjaan
skrip. JavaScript menggunakan objek untuk
melakukan banyak pekerjaan dan oleh karena itu ia dinamakan dengan bahasa
pemrograman berbasis objek. Tujuannya di sini adalah membantu Anda untuk
mengembangkan cara berpikir berorientasi-objek. Teknologi seperti CSS,
JavaScript, Ajax memiliki konsep-konsep yang dikenalkan pada bagian ini.
Konsep Teknologi-Objek
Akan dikenalkan teknologi objek dengan
beberapa peristilahan kunci. Di manapun Anda melihat di sekeliling Anda, Anda
melihat objek---manusia, binatang, tanaman, mobil, pesawat terbang, bangunan,
komputer, dan lainnya. Manusia berpikir dalam satuan objek. Telepon, rumah,
kompor, dan tempat tidur merupakan beberapa objek yang sering ada di sekeliling
Anda.
Objek kadangkala dibagi ke dalam dua
kategori: hidup dan mati. Objek hidup adalah objek bergerak dan melakukan
pekerjaan. Objek mati tidak bergerak. Kedua jenis objek tersebut memiliki
kesamaan. Semuanya memiliki atribut
(seperti, ukuran, bentuk, warna, dan berat), dan semuanya memiliki watak (misalnya, bola memantul,
mengembang, menyusut; bayi menangis, tidur, merangkak, berjalan, dan mengedip;
mobil melaju, berbelok, dan memutar; handuk menyerap air). Anda akan belajar
jenis-jenis atribut dan watak yang dimiliki oleh objek-objek perangkat-lunak.
Manusia belajar tentang objek dengan mempelajari
atributnya dan mengamati wataknya. Pelbagai objek memiliki atribut yang sama
dan menunjukkan watak yang sama pula. Perbandingan dapat dilakukan, misalnya,
antara bayi dan orang dewasa, dan antara manusia dan monyet.
Desain Berorientasi-Objek (OOD, Object-Oriented Design) memodelkan perangkat-lunak dengan
cara yang sama ketika manusia menjelaskan objek di dunia nyata. Desain ini
memanfaatkan relasi kelas, dimana objek-objek dari kelas tertentu memiliki
karakteristik yang sama. Misalnya, mobil dan truk memiliki karakteristik yang
sama. OOD juga memiliki relasi pewarisan, dimana objek dari kelas baru
diderivasi dengan mengabsorbsi karakteristik dari kelas yang sudah ada dan
menambahkan karakteristik uniknya sendiri.
Perancangan berorientasi-objek
memberikan cara yang alamiah dan intuitif dalam memandang proses perancangan
perangkat-lunak, misalnya pemodelan objek berdasarkan atribut, watak, dan
inter-relasi yang mengadopsi cara manusia memandang objek dunia nyata. OOD juga
memodelkan komunikasi antar objek. Sama seperti manusia mengirimkan pesan satu
sama lain, objek juga berkomunikasi melalui pesan. Sebuah objek akun bank dapat
menerima pesan untuk mengurangi saldonya sejumlah besaran tertentu karena
konsumen telah menarik sejumlah uang dari akun bank tersebut.
OOD mengenkapsulasi (membungkus) atribut dan operasi (watak) ke dalam
objek. Hal ini berarti bahwa atribut dan operasi sebuah objek diikat atau
dibungkus menjadi satu kesatuan. Objek juga dapat melakukan penyembunyian informasi. Hal ini berarti
bahwa objek dapat mengetahui berkomunikasi satu sama lain melalui antarmuka,
tetapi kedua objek tersebut tidak mengetahui bagaimana tiap objek itu
diimplementasikan. Detil implementasi tersembunyi di dalam objek itu sendiri.
Anda dapat menyetir mobil secara efektif, misalnya, tanpa perlu mengetahui
detil bagaimana mesin, transmisi, dan rem bekerja secara internal. Sepanjang
Anda menggunakan pedal gas, pedal rem, dan stir, Anda dapat mengendarai mobil
secara efektif. Penyembunyian informasi merupakan hal yang krusial dalam
rekayasa perangkat-lunak.
Sama seperti para perancang mobil,
perancang penjelajah web juga memiliki himpunan objek terdefinisi yang
mengenkapsulasi elemen-elemen dokumen XHTML dan yang memberitahu programer
JavaScript tentang atribut dan watak tiap objek sehingga program JavaScript
dapat berinteraksi dengan elemen-elemen tersebut. Anda akan melihat bahwa objek
document memuat atribut dan watak
yang menyediakan akses terhadap setiap elemen pada sebuah dokumen XHTML. Sama
halnya, JavaScript menyediakan objek-objek yang mengenkapsulasi pelbagai
kapabilitas di dalam sebuah skrip. Misalnya, objek Array JavaScript menyediakan beberapa atribut dan watak yang
memampukan sebuah skrip untuk memanipulasi suatu koleksi data. Properti length (atribut) dari objek Array memuat jumlah elemen di dalam Array. Metode sort (watak) dari objek Array
mengurutkan elemen-elemen Array.
Beberapa bahasa pemrograman, seperti
Java, Visual Basic, C#, dan C++, merupakan bahasa pemrograman
berorientasi-objek (OOP, object-oriented
programming). Bahasa pemrograman semacam itu memampukan programer komputer
untuk mengimplementasikan perancangan berorientasi-objek. Bahasa seperti C, di
sisi lain, adalah bahasa pemrograman prosedural yang cenderung berorientasi
aksi. Dalam bahasa prosedural, unit pemrograman adalah fungsi. Dalam bahasa
berorientasi-objek, unit pemrograman adalah kelas. Objek diinstansiasi
(diciptakan) dari kelas. Kelas memuat fungsi yang mengimplementasikan operasi
dan data yang memuat atribut.
Programer prosedural berkonsentrasi
pada fungsi. Programer mengelompokkan aksi-aksi (untuk melakukan pelbagai
pekerjaan) ke dalam fungsi, dan mengelompokkan fungsi-fungsi untuk membentuk
program. Data merupakan entitas penting dalam pemrograman prosedural.
Kelas, Properti, dan Metode
Programer berorientasi-objek berkonsentrasi
pada penciptaan tipe terdefinisi-pengguna sendiri yang dinamakan dengan kelas.
Setiap kelas memuat data, himpunan fungsi yang memanipulasi data, dan
menyediakan layanan kepada klien (yaitu, kelas atau fungsi lain yang
menggunakan kelas tersebut). Komponen
data sebuah kelas disebut dengan properti. Sebagai contoh, sebuah kelas
akun bank mencakup nomor akun dan saldo. Komponen
fungsi sebuah kelas dinamakan dengan metode. Sebagai contoh, sebuah akun
bank memuat metode-metode yang melakukan penyimpanan (menambah saldo),
melakukan penarikan (mengurangi saldo), dan yang memperoleh jumlah saldo
sekarang. Anda menggunakan tipe built-in (dan tipe terdefinisi-pengguna lain)
sebagai blok pembangun untuk membangun tipe terdefinisi-pengguna yang baru.
Kelas merupakan “rencana” dalam
membangun objek dari kelas itu. Sama seperti Anda dapat membangun banyak rumah
dari satu rancangan, Anda dapat menginstansiasi (menciptakan) banyak objek dari
satu kelas.
Kelas dapat memiliki relasi dengan
kelas lain. Sebagai contoh, pada sebuah perancangan berorientasi-objek dari
sebuah bank, kelas pelayan bank perlu berelasi dengan kelas lain, seperti kelas
konsumen, kelas akun, dan lainnya. Relasi ini disebut dengan asosiasi.
Pemaketan perangkat-lunak sebagai kelas dimaksudkan agar dapat dilakukan
pendaur-ulangan kelas tersebut untuk kepentingan lain dan kepentingan di masa
mendatang.
8.3 Objek Math
Metode –metode dari objek Math memampukan Anda untuk melakukan
banyak perhitungan matematik yang umum dijumpai. Metode sebuah objek dipanggil
dengan menuliskan nama objek yang diikuti dengan sebuah dot (.) dan nama
metode. Yang diapit sepasang kurung (terletak setelah nama metode) adalah
argumen (daftar argumen) metode. Sebagai contoh, untuk menghitung dan
menampilkan akar kuadrat dari 900.0, Anda menuliskan
document.writeln(
Math.sqrt( 900.0 ) );
yang memanggil metode Math.sqrt untuk menghitung akar kuadrat
dari angka yang diapit oleh sepasang kurung (900.0), kemudian menampilkan
hasilnya. Angka 900.0 merupakan argumen dari metode Math.sqrt. Statemen tersebut akan menampilkan 30.0. Beberapa metode
dari objek Math ditampilkan pada
Gambar 8.1.
Metode
|
Penjelasan
|
Contoh
|
abs( x )
|
Nilai absolut dari x.
|
abs(
7.2 ) adalah 7.2
abs(
0.0 ) adalah 0.0
abs(
-5.6 ) adalah 5.6
|
ceil( x )
|
Membulatkan x ke integer terkecil yang tidak kurang dari x.
|
ceil(
9.2 ) adalah 10.0
ceil(
-9.8 ) adalah -9.0
|
cos( x )
|
Kosinus trigonometrik dari x (x dalam radian).
|
cos(
0.0 ) adalah 1.0
|
exp( x )
|
Metode eksponensial
|
exp(
1.0 ) adalah 2.71828
exp(
2.0 ) adalah 7.38906
|
floor( x )
|
Membulatkan x ke integer terbesar yang tidak lebih dari x.
|
floor(
9.2 ) adalah 9.0
floor(
-9.8 ) adalah -10.0
|
log( x )
|
Logaritma natural dari x (basis e).
|
log(
2.718282 ) adalah 1.0
log(
7.389056 ) adalah 2.0
|
max( x, y )
|
Nilai terbesar dari x dan y.
|
max(
2.3, 12.7 ) adalah 12.7
max(
-2.3, -12.7 ) adalah -2.3
|
min( x, y )
|
Nilai terkecil dari x dan y.
|
min(
2.3, 12.7 ) adalah 2.3
min(
-2.3, -12.7 ) adalah -12.7
|
pow( x, y )
|
Nilai dari x yang dipangkatkan dengan y
|
pow(
2.0, 7.0 ) adalah 128.0
pow(
9.0, .5 ) adalah 3.0
|
round( x )
|
Membulatkan x ke integer terdekat.
|
round(
9.75 ) adalah 10
round(
9.25 ) adalah 9
|
sin( x )
|
Sinus trigonometrik dari x (x dalam radian).
|
sin(
0.0 ) adalah 0.0
|
sqrt( x )
|
Akar kuadrat dari x.
|
sqrt(
900.0 ) adalah 30.0
sqrt(
9.0 ) adalah 3.0
|
tan( x )
|
Tangent trigonometrik dari x (x dalam radian).
|
tan(
0.0 ) adalah 0.0
|
Gambar 8.1 Metode-metode dari objek Math
Objek Math mendefinisikan beberapa konstanta matematik yang umum dipakai,
yang dicantumkan pada Gambar 8.2. Perhatikan bahwa nama konstanta ditulis
dengan huruf besar.
Konstanta
|
Penjelasan
|
Nilai
|
Math.E
|
Basis dari logaritma natural (e).
|
Berkisar 2.718.
|
Math.LN2
|
Logaritma natural dari 2.
|
Berkisar 0.693
|
Math.LN10
|
Logaritma natural dari 10.
|
Berkisar 2.302
|
Math.LOG2E
|
Logaritma basis 2 dari e.
|
Berkisar 1.442
|
Math.LOG10E
|
Logaritma basis 10 dari e.
|
Berkisar 0.434
|
Math.PI
|
|
Berkisar 3.141592653589793
|
Math.SQRT1_2
|
Akar kuadrat dari 0.5.
|
Berkisar 0.707
|
Math.SQRT2
|
Akar kuadrat dari 2.0.
|
Berkisar 1.414
|
Gambar 8.2 Konstanta-konstanta dari objek Math
8.4 Objek String
Pada bagian ini, akan dikenalkan
kapabilitas pemrosesan karakter dan pemrosesan string pada JavaScript.
Teknik-teknik yang digunakan di sini cocok untuk pemrosesan nama, alamat, nomor
telepon, dan lainnya.
8.4.1 Hal Fundamental tentang Karakter dan String
Karakter merupakan blok pembangun yang
fundamental pada program JavaScript. Setiap program terdiri-dari runtun
karakter yang dikelompokkan bersama sehingga dapat diterjemahkan oleh komputer
sebagai sederet instruksi untuk melakukan pekerjaan tertentu.
String merupakan sederet karakter yang
diperlakukan sebagai unit tunggal. String memuat huruf, dijit, dan pelbagai
karakter spesial, seperti +, -, *, /, dan $. JavaScript mendukung himpunan
karakter Unicode, yang merepresentasikan sebagian besar bahasa-bahasa dunia.
String merupakan objek bertipe String.
Literal string atau konstanta string (sering kali disebut dengan objek String anonim) ditulis sebagai runtun
karakter yang diapit oleh dua tanda kutip ganda atau oleh dua tanda kutip
tunggal, sebagai berikut:
"Siti Mutmainah" (nama)
'Jl. Medan No. 27' (nama jalan)
"Pematang Siantar, SUMUT" (nama kota dan propinsi)
'(061)
555-1212' (nomor telepon)
String dapat ditugaskan kepada sebuah variabel
di dalam deklarasi. Deklarasi
var
warna = "biru”;
menginisialisasi variabel warna dengan
objek String yang memuat string “biru”.
String dapat dibandingkan menggunakan operator relasional (<, <=, >,
dan >=) dan operator ekualitas (== dan !=). String dibandingkan menggunakan
nilai Unicode dari karakter terkait. Sebagai contoh, ekspresi “hallo” < “Hallo” dievaluasi menjadi false
karena huruf kecil memiliki nilai Unicode yang lebih tinggi.
8.4.2 Metode-Metode dari Objek String
Objek String mengenkapsulasi atribut
dan watak dari sebuah string. Ia menyediakan banyak metode (watak) untuk
melakukan pekerjaan-pekerjaan seperti memilih karakter-karakter dari sebuah
string, menggabungkan string (disebut dengan penyambungan), mendapatkan
substring dari sebuah string, melakukan pencarian substring di dalam sebuah
string, mentokenkan string (memecah string menjadi kata-kata), dan mengkonversi
string menjadi huruf besar atau huruf kecil. Objek String juga menyediakan beberapa metode yang menghasilkan tag
XHTML. Gambar 8.3 mencantumkan banyak metode String. Gambar 8.4 – Gambar 8.7 mendemonstrasikan sebagian dari
metode-metode tersebut.
Metode
|
Penjelasan
|
charAt( indeks
)
|
Menghasilkan
sebuah string yang memuat karakter pada indeks
yang ditentukan. Jika tidak ada karakter pada indeks tersebut, charAt
akan menghasilkan string kosong. Karakter pertama berlokasi pada indeks 0.
|
charCodeAt(
indeks )
|
Menghasilkan
nilai Unicode dari karakter yang berada pada indeks tertentu, atau
menghasilkan
Nan (not an number) jika tidak ada
karakter pada indeks tersebut.
|
concat(
string )
|
Menggabungkan
argumennya ke akhir string yang memanggil metode tersebut. String pemanggil
metode ini tidak dimodifikasi; sebuah String
baru dihasilkan (dijadikan nilai balik). Metode ini sama dengan
menjumlahlahkan dua string menggunakan operator penyambungan-string + (yaitu,
s1.concat(s2) sama dengan s1 + s2).
|
fromCharCode(
nilai1, nilai2, …)
|
Mengkonversi
himpunan nilai-nilai Unicode menjadi sebuah string yang memuat
karakter-karakter terkait.
|
indexOf(
substring, indeks )
|
Mencari
kemunculan pertama dari substring
dimulai dari posisi indeks di
dalam string yang memanggil metode ini. Metode ini menghasilkan indeks awal
dari substring di dalam string
sumber atau -1 jika substring
tidak ditemukan. Jika argumen indeks tidak diberikan, maka metode memulai
pencarian dari indeks 0 di dalam string sumber.
|
lastIndexOf(
substring, indeks )
|
Searches
for the last occurrence of substring
starting from
position
index
and searching
toward the beginning of the string that invokes
the
method. The method returns the starting index of substring in
the
source string or –1 if substring
is not found. If
the index argument
is
not provided, the method begins searching from the end of
the
source string.
|
replace(
stringCari,
stringGanti )
|
Melakukan
pencarian terhadap substring stringCari,
dan mengganti kemunculan pertama dari substring tersebut dengan stringGanti dan menghasilkan string
termodifikasi, atau string asli jika penggantian tidak dilakukan.
|
slice(
awal, akhir )
|
Menghasilkan
sebuah string yang memuat potongan dari string dimulai dari indeks awal sampai indeks akhir. Jika indeks awal tidak ditetapkan, maka metode
ini menghasilkan sebuah string dari indeks awal ke akhir string sumber.
|
split(
string )
|
Memecah
string sumber ke dalam sebuah array yang memuat string-string (token-token),
dimana argumen stringnya menetapkan pembatas (karakter yang mengindikasikan
akhir dari tiap token di dalam string sumber).
|
substr(
awal, panjang )
|
Menghasilkan
sebuah string yang memuat sebanyak panjang
karakter yang dimulai dari indeks awal di dalam string sumber. Jika panjang tidak ditetapkan, maka sebuah
string yang memuat karakter-karakter dari awal sampai akhir dari string sumber dijadikan nilai balik.
|
substring(
awal, akhir )
|
Menghasilkan
sebuah string yang memuat karakter-karakter dari indeks awal sampai indeks akhir
(tidak termasuk indeks akhir) di
dalam string sumber.
|
toLowerCase()
|
Menghasilkan
sebuah string dimana semua huruf besar akan dikonversi menjadi huruf kecil.
Karakter yang bukan huruf tidak akan berubah.
|
toUpperCase()
|
Menghasilkan
sebuah string dimana semua huruf kecil akan dikonversi menjadi huruf besar.
Karakter yang bukan huruf tidak akan berubah.
|
Method-Metode yang menghasilkan tag XHTML
|
|
anchor(
nama )
|
Membungkus atau menyatukan string
sumber di dalam sebuah elemen achor (<a></a>) dengan nama
sebagai nama anchor.
|
fixed()
|
Membungkus atau menyatukan string
sumber di dalam sebuah elemen <tt></tt>.
|
link(
url )
|
Membungkus atau menyatukan string
sumber di dalam sebuah elemen achor (<a></a>) dengan url
sebagai lokasi hyperlink.
|
strike()
|
Membungkus atau menyatukan string
sumber di dalam sebuah elemen <strike></strike>.
|
sub()
|
Membungkus atau menyatukan string
sumber di dalam sebuah elemen <sub></sub>.
|
sup()
|
Membungkus atau menyatukan string
sumber di dalam sebuah elemen <sup></sup>.
|
Gambar 8.3 Beberapa metode dari objek String
8.4.3 Metode Pemroses-Karakter
Skrip pada Gambar 8.4 mendemonstrasikan
beberapa metode pemrosesan-karater dari objek String, termasuk charAt
(menghasilkan karakter pada posisi tertentu), charCodeAt (menghasilkan nilai Unicode dari karakter pada posisi
tertentu), fromCharCode
(menghasilkan sebuah string yang diciptakan dari sederet nilai Unicode), toLowerCase (menghasilkan versi
huruf-kecil dari sebuah string), dan toUpperCase
(menghasilkan versi huruf-besar dari sebuah string).
Baris 17-18 menampilkan karakter
pertama di dalam String s (“ZEBRA”) menggunakan metode charAt. Metode charAt menghasilkan sebuah string yang memuat karakter pada indeks
tertentu (0 pada contoh ini). Indeks untuk karakter pada sebuah string dimulai
dari 0 (karakter pertama) sampai indeks length
– 1. Jika indeks berada di luar
batas string, maka metode ini menghasilkan sebuah string kosong.
Baris 18-19 menampilkan kode karakter
untuk karakter pertama di dalam String
s (“ZEBRA”) dengan memanggil metode charCodeAt. Metode charCodeAt
menghasilkan nilai Unicode dari karakter pada indeks tertentu (0 pada kasus
ini). Jika indeks berada di luar batas string, maka metode ini menghasilkan NaN.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<?xml
version = "1.0" encoding = "utf-8"?>
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Gambar 8.4: PemrosesanKarakter.html -->
<!-- Metode
charAt, charCodeAt, fromCharCode, toLowercase dan
toUpperCase. -->
<html xmlns =
"http://www.w3.org/1999/xhtml">
<head>
<title>Metode-Metode
Pemrosesan Karakter</title>
<script type =
"text/javascript">
<!--
var s = "ZEBRA";
var s2 = "AbCdEfG";
document.writeln( "<p>Karakter
pada indeks 0 di dalam '" +
s + "' adalah " +
s.charAt( 0 ) );
document.writeln( "<br
/>Kode karakter pada indeks0 di dalam '"
+ s + "' adalah
" + s.charCodeAt( 0 ) + "</p>" );
document.writeln( "<p>'"
+
String.fromCharCode( 87, 79,
82, 68 ) +
"' memuat kode 87,
79, 82 dan 68</p>" )
document.writeln( "<p>'"
+ s2 + "' dalam huruf kecil adalah '" +
s2.toLowerCase() +
"'" );
document.writeln( "<br
/>'" + s2 + "' dalam huruf besar adalah '"
+ s2.toUpperCase() + "'</p>"
);
// -->
</script>
</head><body></body>
</html>
|
Gambar 8.4 Metode-metode charAt, charCodeAt, fromCharCode, toLowerCase,
dan toUpperCase
Metode fromCharCode menerima sebagai argumennya sebuah daftar nilai
Unicode (dimana tiap nilai dipisahkan dengan sebuah koma) dan membangun sebuah
string yang memuat representasi karakter dari nilai-nilai Unicode tersebut.
Baris 21-23 menampilkan string “WORD”,
yang memuat kode-kode karakter 87, 79, 82, dan 68.
Statemen pada baris 25-26 dan baris
27-28 menggunakan metode toLowerCase
dan toUpperCase untuk menampilkan
versi dari String s2 (“AbCdEfG”) dalam huruf besar dan huruf kecil.
8.4.4 Metode Pencarian
Pencarian sebuah karakter atau sebuah
runtun karakter di dalam suatu string merupakan tugas penting dalam
pemrograman. Sebagai contoh, jika Anda menciptakan pengolah kata sendiri, Anda
tentu ingin menyediakan kapabilitas pencarian dokumen. Skrip pada Gambar 8.5
mendemonstrasikan metode indexOf dan
lastIndexOf yang melakukan pencarian
terhadap substring tertentu di dalam sebuah string. Semua pencarian pada contoh
ini dilakukan terhadap string global huruf (diinisialisasi pada baris 14 dengan
"abcdefghijklmnopqrstuvwxyzabcdefghijklm" di dalam skrip).
Pengguna mengetikkan sebuah substring
pada formulir XHTML bidang teks cariForm
dan menekan tombol Cari untuk
melakukan pencarian terhadap substring di dalam huruf. Pengklikan tombol Cari akan memanggil fungsi tombolDitekan (didefinisikan pada baris
16-19) untuk merespon event onclick
dan melakukan pencarian. Hasil dari tiap pencarian ditampilkan pada bidang teks
cariForm.
Baris 21-22 menggunakan metode indexOf untuk menentukan lokasi dari
kemunculan pertama string nilMasukan.value
(yaitu, string yang diketikkan pengguna pada bidang teks nilMasukan) di dalam string huruf.
Jika substring ditemukan, maka indeks kemunculan pertama dari substring
tersebut akan dijadikan nilai balik; sebaliknya, -1 akan dijadikan nilai balik.
Baris 23-24 menggunakan metode lastIndexOf untuk menentukan lokasi
dari kemunculan akhir string nilMasukan.value
(yaitu, string yang diketikkan pengguna pada bidang teks nilMasukan) di dalam string huruf.
Jika substring ditemukan, maka indeks kemunculan akhir dari substring tersebut
akan dijadikan nilai balik; sebaliknya, -1 akan dijadikan nilai balik.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
<?xml
version = "1.0" encoding = "utf-8"?>
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Gambar 8.5: CariString.html -->
<!--
Pencarian string dengan metode indexOf dan lastIndexOf. -->
<html xmlns =
"http://www.w3.org/1999/xhtml">
<head>
<title>
Pencarian String dengan Metode
indexOf dan lastIndexOf
</title>
<script type =
"text/javascript">
<!--
var huruf= "abcdefghijklmnopqrstuvwxyzabcdefghijklm";
function tombolDitekan()
{
var cariForm =
document.getElementById( "cariForm" );
var nilMasukan =
document.getElementById( "nilMasukan" );
cariForm.elements[2].value =
huruf.indexOf(
nilMasukan.value );
cariForm.elements[3].value =
huruf.lastIndexOf(
nilMasukan.value );
cariForm.elements[4].value =
huruf.indexOf(
nilMasukan.value, 12 );
cariForm.elements[5].value =
huruf.lastIndexOf(
nilMasukan.value, 12 );
} // akhir fungsi tombolDitekan
// -->
</script>
</head>
<body>
<form id = "cariForm"
action = "">
<h1>String tempat
pencarian adalah :<br />
abcdefghijklmnopqrstuvwxyzabcdefghijklm</h1>
<p>Masukkan
substring yang akan dicari
<input id =
"nilMasukan" type = "text" />
<input id =
"cari" type = "button" value = "Cari"
onclick =
"tombolDitekan()" /><br /></p>
<p>Kemunculan
pertama pada indeks
<input id =
"pertama" type = "text" size
= "5" />
<br />Kemunculan
akhir pada indeks
<input id = "akhir"
type = "text" size = "5" />
<br />Kemunculan
pertama dimulai dari indeks 12 pada indeks
<input id =
"pertama12" type = "text" size
= "5" />
<br />Kemunculan
akhir dimulai dari indeks 12 pada indeks
<input id =
"akhir12" type = "text" size =
"5" /></p>
</form>
</body>
</html>
|
Gambar 8.5 Pencarian string dengan indexOf
dan lastIndexOf
Baris 25-26 menggunakan metode indexOf untuk menentukan lokasi dari
kemunculan pertama string nilMasukan.value
(yaitu, string yang diketikkan pengguna pada bidang teks nilMasukan, dimulai dari indeks 12) di dalam string huruf. Jika substring ditemukan, maka
indeks kemunculan pertama dari substring tersebut (dimulai dari indeks 12) akan
dijadikan nilai balik; sebaliknya, -1 akan dijadikan nilai balik.
Baris 27-28 menggunakan metode lasIndexOf untuk menentukan lokasi dari
kemunculan akhir string nilMasukan.value
(yaitu, string yang diketikkan pengguna pada bidang teks nilMasukan, dimulai dari indeks 12 bergerak menuju awal string) di
dalam string huruf. Jika substring
ditemukan, maka indeks kemunculan akhir dari substring tersebut (dimulai dari
indeks 12) akan dijadikan nilai balik; sebaliknya, -1 akan dijadikan nilai
balik.
8.4.5 Memecah String dan Mendapatkan Substring
Ketika Anda membaca sebuah kalimat,
pikiran Anda tentu fokus pada kata demi kata secara individual, atau
token-token, yang masing-masing memiliki makna bagi Anda. Proses pemecahan sebuah string menjadi token-token dikenal dengan
tokenisasi. Penerjemah juga melakukan tokenisasi. Penerjemah JavaScript
memecah statemen menjadi katakunci, pengenal, operator, dan elemen-elemen
lainnya. Gambar 8.6 mendemonstrasikan metode split dari objek String,
yang memecah sebuah string menjadi token-token. Antar token dipisahkan oleh
pemisah (delimiter), yang umumnya
berupa karakter spasi-putih seperti spasi, tab, karakter garis-baru, dan carriage return. Dokumen XHTML menampilkan sebuah formulir yang memuat suatu
bidang teks dimana pengguna mengetikkan kalimat yang akan ditokenkan. Hasil
dari proses tokenisasi ditampilkan pada komponen GUI textarea. Skrip juga mendemonstrasikan metode substring dari objek String,
yang menghasilkan nilai balik berupa potongan string.
Pengguna mengetikkan sebuah kalimat ke
dalam bidang teks id nilMasukan dan menekan tombol Pecah untuk menokenkan string. Fungsi pecahTombolDitekan (baris 12-21)
menangani event onclick pada tombol.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<?xml
version = "1.0" encoding = "utf-8"?>
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Gambar 8.6: MemecahdanSubstring.html -->
<!--
Metode split dan substring dari objek String. -->
<html xmlns =
"http://www.w3.org/1999/xhtml">
<head>
<title>Metode split dan
substring dari Objek String</title>
<script type =
"text/javascript">
<!--
function
pecahTombolDitekan()
{
var stringMasukan =
document.getElementById( "nilMasukan" ).value;
var token =
stringMasukan.split( " " );
document.getElementById(
"keluaran" ).value =
token.join( "\n"
);
document.getElementById(
"substringKeluaran" ).value =
stringMasukan.substring(
0, 10 );
} // akhir fungsi
pecahTombolDitekan
// -->
</script>
</head>
<body>
<form action = "">
<p>Masukkan sebuah
kalimat yang akan dipecah menjadi kata-kata<br />
<input id =
"nilMasukan" type = "text" size =
"40" />
<input type =
"button" value = "Pecah"
onclick = "pecahTombolDitekan()"
/></p>
<p>Kalimat setelah
dipecah menjadi kata-kata adalah<br />
<textarea id = "keluaran"
rows = "8" cols = "34">
</textarea></p>
<p>10 karakter pertama dari
string masukan adalah
<input id = "substringKeluaran"
type = "text"
size = "15"
/></p>
</form>
</body>
</html>
|
Gambar 8.6 Metode split dan substring dari objek String
Baris 14 mendapatkan nilai dari bidang
masukan dan menyimpannya di dalam variabel stringMasukan.
Baris 15 memanggil metode split
untuk menokenkan stringMasukan.
Argumen pada metode split adalah
string pembatas (delimiter), yaitu string yang menentukan akhir dari tiap token
pada string asli. Pada contoh ini, karakter spasi membatasi antar token. String
pembatas dapat memuat beberapa karakter
yang bisa dipakai sebagai pembatas. Metode split
menghasilkan nilai balik berupa sebuah array string yang memuat token-token.
Baris 17 menggunakan metode join
untuk menggabungkan token-token di dalam array token dan memisahkan tiap token dengan sebuah karakter garis-baru (\n). String yang dihasilkan kemudian
ditugaskan kepada properti value
dari komponen GUI keluaran (sebuah textarea
XHTML).
Baris 18-20 menggunakan metode substring untuk mendapatkan sebuah
string yang memuat 10 karakter pertama dari string yang diketikkan oleh
pengguna (masih disimpan di dalam stringMasukan).
Metode ini menghasilkan nilai balik berupa substring dari indeks awal (0 pada contoh ini) sampai indeks akhir - 1 (10 – 1 = 9 pada contoh ini).
Jika indeks akhir lebih dari panjang string, maka substring yang dijadikan
nilai balik memuat karakter-karakter dari indeks awal sampai akhir string asli.
8.4.6 Metode Markup XHTML
Skrip pada Gambar 8.7 mendemonstrasikan
metode-metode dari objek String yang
menghasilkan tag-tag markup XHTML.
Ketika sebuah objek String memanggil
metode markup, metode itu membungkus
isi String di dalam tag XHTML yang
sesuai. Metode-metode umumnya berguna untuk menghasilkan XHTML secara dinamis
selama pemrosesan skrip.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<?xml
version = "1.0" encoding = "utf-8"?>
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Gambar 8.7: MetodeMarkup.html -->
<!--
Metode-metode markup XHTML dari objek String. -->
<html xmlns =
"http://www.w3.org/1999/xhtml">
<head>
<title>Metode-Metode
Markup XHTML dari Objek String</title>
<script type =
"text/javascript">
<!--
var anchorText = "Ini
adalah sebuah anchor";
var fixedText = "Ini
adalah sebuah teks spasi mono";
var linkText = "Klik
di sini untuk pergi ke anchorText";
var strikeText = "Ini
adalah sebuah teks yang dicoret";
var subText = "subskrip";
var supText = "superskrip";
document.writeln(
anchorText.anchor( "top" ) );
document.writeln( "<br
/>" + fixedText.fixed() );
document.writeln( "<br
/>" + strikeText.strike());
document.writeln(
"<br />Ini
adalah sebuah teks dengan sebuah " + subText.sub() );
document.writeln(
"<br />Ini
adalah sebuah teks dengan sebuah " + supText.sup() );
document.writeln( "<br
/>" + linkText.link( "#top" ) );
// -->
</script>
</head><body></body>
</html>
|
Gambar 8.7 Metode-metode markup XHTML dari objek String
Baris 12-17 mendefinisikan
string-string yang memanggil metode-metode markup
XHTML dari objek String. Baris 19
menggunakan metode anchor untuk
memformat string di dalam variabel anchorText
(“Ini adalah sebuah anchor”) sebagai
<a
name = "top">Ini
adalah sebuah anchor</a>
Elemen name dari anchor adalah argumen untuk metode. Anchor ini akan
digunakan pada contoh sebagai target dari sebuah hyperlink.
Baris 20 menggunakan metode fixed untuk menampilkan teks di dalam
sebuah font berlebar-tetap dengan memformat string di dalam variabel fixedText (“Ini adalah sebuah teks dengan spasi mono”) sebagai
<tt>Ini adalah
sebuah teks dengan spasi mono</tt>
Baris 21 menggunakan metode strike untuk menampilkan teks dengan
sebuah garis mencoret teks tersebut. Hal ini dilakukan dengan memformat string
di dalam variabel strikeText (“Ini adalah sebuah teks yang dicoret”)
sebagai
<strike>Ini adalah
sebuah teks yang dicoret</strike>
Baris 22-23 menggunakan metode sub untuk menampilkan teks subskrip
dengan memformat string di dalam variabel subText
(“subskrip”) sebagai
<sub>subskrip</sub>
Perhatikan bahwa dokumen XHTML
menampilkan kata subksrip lebih
kecil dari teks lainnya dan ia berada sedikit di bawah baris.
Baris 24-25 memanggil metode sup untuk menampilkan teks superskrip
dengan memformat string di dalam variabel supText
(“superskrip”) sebagai
<sup>superskrip</sup>
Perhatikan bahwa dokumen XHTML
menampilkan kata superskrip lebih
kecil dari teks lainnya dan ia berada sedikit di atas baris.
Baris 26 menggunakan metode link untuk menciptakan sebuah hyperlink dengan memformat string di
dalam variabel linkText (“Klik di sini untuk pergi ke anchorText”)
sebagai
<a
href = "#top">Klik
di sini untuk pergi ke anchorText</a>
Target dari hyperlink (#top pada
contoh ini) merupakan argumen pada metode dan dapat berupa sembarang URL. Pada
contoh ini, target hyperlink adalah
anchor yang diciptakan pada baris 19.
8.5 Objek Date
Objek Date JavaScript menyediakan beberapa metode untuk manipulasi
tanggal dan waktu. Pemrosesan tanggal dan waktu dapat diterapkan berdasarkan
pada zona waktu lokal komputer atau berdasarkan UTC (Coordinated Universal Time), yang sebelumnya dikenal dengan Greenwich Mean Time (GMT). Hampir semua
metode dari objek Date memiliki zona
waktu lokal dan versi UTCnya. Metode-metode dari objek Date dicantumkan pada Gambar 8.8.
Metode
|
Penjelasan
|
getDate()
getUTCDate()
|
Menghasilkan sebuah angka dari 1
sampai 31 yang merepresentasikan hari dalam bulan dalam waktu lokal atau UTC.
|
getDay()
getUTCDay()
|
Menghasilkan sebuah angka dari 0
(Minggu) sampai 6 (Sabtu) yang merepresentasikan hari dalam minggu dalam
waktu lokal atau UTC.
|
getFullYear()
getUTCFullYear()
|
Menghasilkan tahun sebagai angka
empat-dijit dalam waktu lokal atau UTC.
|
getHours()
getUTCHours()
|
Menghasilkan sebuah angka dari 0
sampai 23 yang merepresentasikan jam sejak tengah malam dalam waktu lokal
atau UTC.
|
getMilliseconds()
getUTCMilliSeconds()
|
Menghasilkan sebuah angka dari 0
sampai 999 yang merepresentasikan jumlah milidetik dalam waktu lokal atau
UTC. Waku disimpan dalam jam, menit, detik, dan milidetik.
|
getMinutes()
getUTCMinutes()
|
Menghasilkan sebuah angka dari 0
sampai 59 yang merepresentasikan menit untuk waktu lokal atau UTC.
|
getMonth()
getUTCMonth()
|
Menghasilkan sebuah angka dari 0
(Januari) sampai 11 (Desember) yang merepresentasikan bulan dalam waktu lokal
atau UTC.
|
getSeconds()
getUTCSeconds()
|
Menghasilkan sebuah angka dari 0
sampai 59 yang merepresentasikan detik untuk waktu lokal atau UTC.
|
getTime()
|
Menghasilkan jumlah milidetik antara
1 Januari 1970 dan waktu di dalam objek Date.
|
getTimezoneOffset()
|
Menghasilkan selisih dalam menit
antara waktu sekarang pada komputer lokal dengan waktu UTC.
|
setDate(
val )
setUTCDate(
val )
|
Menetapkan hari dalam bulan (1 sampai
31) dalam waktu lokal atau UTC.
|
setFullYear(
y, m, d )
setUTCFullYear(
y, m, d )
|
Menetapkan tahun dalam waktu lokal
atau UTC. Argumen kedua dan ketiga, yang merepresentasikan bulan dan tanggal,
bersifat opsional. Jika argumen ini diabaikan, maka nilai sekarang yang ada
di dalam objek Date dipakai.
|
setHours(
h, m, s, ms )
setUTCHours(
h, m, s, ms )
|
Menetapkan jam dalam waktu lokal atau
UTC. Argumen kedua, ketiga, keempat, yang merepresentasikan menit, detik, dan
milidetik, bersifat opsional. Jika argumen ini diabaikan, maka nilai sekarang
yang ada di dalam objek Date
dipakai.
|
setMilliSeconds(
ms )
setUTCMilliseconds(
ms )
|
Menetapkan jumlah milidetik dalam
waktu lokal atau UTC.
|
setMinutes(
m, s, ms )
setUTCMinutes(
m, s, ms )
|
Menetapkan menit dalam waktu lokal
atau UTC. Argumen kedua dan ketiga, yang merepresentasikan detik dan
milidetik, bersifat opsional. Jika argumen ini diabaikan, maka nilai sekarang
yang ada di dalam objek Date
dipakai.
|
setMonth(
m, d )
setUTCMonth(
m, d )
|
Menetapkan bulan dalam waktu lokal
atau UTC. Argumen kedua, yang merepresentasikan tanggal, bersifat opsional.
Jika argumen ini diabaikan, maka nilai tanggal sekarang yang ada di dalam
objek Date dipakai.
|
setSeconds(
s, ms )
setUTCSeconds(
s, ms )
|
Menetapkan detik dalam waktu lokal
atau UTC. Argumen kedua, yang merepresentasikan milidetik, bersifat opsional.
Jika argumen ini diabaikan, maka nilai milidetik sekarang yang ada di dalam
objek Date dipakai.
|
setTime(
ms )
|
Menetapkan waktu berdasarkan
argumennya (jumlah milidetik sejak 1 Januari 1970).
|
toLocaleString()
|
Menghasilkan sebuah representasi
string atas tanggal dan waktu dalam format spesifik pada zona lokal komputer.
Sebagai contoh, 13 September 2007, pada jam 3:42:22 PM
direpresentasikan sebagai 09/13/07 15:47:22 atau 13/09/07 15:47:22.
|
toUTCString()
|
Menghasilkan sebuah representasi
string atas tanggal dan waktu dalam format: 15
Sep 2007 15:47:22 UTC
|
toString()
|
Menghasilkan sebuah representasi
string atas tanggal dan waktu dalam format spesifik pada zona lokal komputer.
|
valueOf()
|
Waktu dalam jumlah milidetik sejak
tengah malam, 1 Januari 1970 (sama dengan getTime).
|
Gambar 8.8 Metode-metode dari objek Date
Skrip pada Gambar 8.9 mendemonstrasikan
beberapa metode zona waktu lokal yang ditampilkan pada Gambar 8.8. Baris 12
menciptakan sebuah objek Date baru.
Operator new mengalokasikan memori
untuk objek Date. Kurung kosong
mengindikasikan sebuah pemanggilan terhadap konstruktor tanpa argumen dari
objek Date. Konstruktor merupakan
suatu metode penginisialisasi untuk sebuah objek. Konstruktor dipanggil secara
otomatis ketika sebuah objek dialokasikan dengan new. Konstuktor tanpa argumen tersebut menginisialisasi objek Date dengan waktu dan tanggal sekarang
pada komputer.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
<?xml
version = "1.0" encoding = "utf-8"?>
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Gambar 8.9: WaktuTanggal.html -->
<!--
Metode-metode tanggal dan waktu dari objek Date. -->
<html xmlns =
"http://www.w3.org/1999/xhtml">
<head>
<title>Metode-Metode
Tanggal dan Waktu</title>
<script type =
"text/javascript">
<!--
var sekarang = new
Date();
document.writeln(
"<h1>Representasi
string dan valueOf</h1>" );
document.writeln( "toString:
" + sekarang.toString() +
"<br />toLocaleString:
" + sekarang.toLocaleString() +
"<br />toUTCString:
" + sekarang.toUTCString() +
"<br />valueOf:
" + sekarang.valueOf());
document.writeln(
"<h1>Metode-metode
untuk zona waktu lokal</h1>" );
document.writeln( "getDate:
" + sekarang.getDate() +
"<br />getDay:
" + sekarang.getDay() +
"<br />getMonth:
" + sekarang.getMonth() +
"<br />getFullYear:
" + sekarang.getFullYear() +
"<br />getTime:
" + sekarang.getTime() +
"<br />getHours:
" + sekarang.getHours() +
"<br />getMinutes:
" + sekarang.getMinutes() +
"<br />getSeconds:
" + sekarang.getSeconds() +
"<br />getMilliseconds:
" + sekarang.getMilliseconds() +
"<br />getTimezoneOffset:
" + sekarang.getTimezoneOffset() );
document.writeln(
"<h1>Menetapkan
argumen untuk sebuah objek Date baru</h1>" );
var lainDate = new Date(
2007, 2, 18, 1, 5, 0, 0 );
document.writeln( "Date:
" + lainDate);
document.writeln( "<h1>Menetapkan metode-metode untuk zona waktu lokal</h1>" );
lainDate.setDate( 31 );
lainDate.setMonth( 11 );
lainDate.setFullYear( 2007 );
lainDate.setHours( 23 );
lainDate.setMinutes( 59 );
lainDate.setSeconds( 59 );
document.writeln( "Tanggal
termodifikasi: " + lainDate );
// -->
</script>
</head><body></body>
</html>
|
Gambar 8.9 Metode-metode tanggal dan waktu dari objek Date (bagian 1 dari 2)
Gambar 8.9 Metode-metode tanggal dan waktu dari objek Date (bagian 2 dari 2)
Baris 16-19 mendemonstrasikan metode toString, toLocalString, toUTCString,
dan valueOf. Perhatikan bahwa metode
valueOf menghasilkan sebuah nilai
integer besar yang merepresentasikan total milidetik antara tengah malam 1
Januari 1970 dan tanggal dan waktu yang disimpan di dalam objek Date, sekarang.
Baris 23-32 mendemonstrasikan
metode-metode get untuk zona waktu
lokal. Perhatikan bahwa metode getFullYear
menghasilkan tahun sebagai sebuah angka empat-dijit. Perhatikan pula bahwa
metode getTimeZoneOffset
menghasilkan selisih dalam menit antara zona waktu lokal dan waktu UTC.
Baris 36 mendemonstrasikan penciptaan
sebuah objek Date baru dan menyuplai
argumen-ergumen kepada konstruktor Date
untuk tahun, bulan, tanggal, menit, detik, dan milidetik. Perhatikan bahwa
argumen jam, menit, detik, dan milidetik bersifat opsional. Jika salah satu
dari keempat argumen itu diabaikan, maka nol akan disuplai untuk nilainya.
Untuk argumen jam, menit, dan detik, jika argumen yang berada di sisi kanan
salah satu dari ketiga argumen ditetapkan, maka ia juga harus ditetapkan
(disuplai). Sebagai contoh, jika argumen menit ditetapkan, maka argumen jam
harus juga ditetapkan. Jika argumen milidetik disuplai, maka ketiga argumen
harus disuplai pula.
Baris 40-45 mendemonstrasikan
metode-metode set dari objek Date untuk waktu zona lokal. Objek Date
merepresentasikan bulan secara internal sebagai sebuah integer dari 0 sampai
11. Ketika menciptakan sebuah objek Date,
Anda harus menetapkan 0 untuk mengindikasikan Januari, 1 untuk mengindikasikan
Pebruari, ..., dan 11 untuk mengindikasikan Desember.
Objek Date menyediakan dua metode lain yang dapat dipanggil tanpa perlu
menciptakan objek Date baru, yaitu Date.parse
dan Date.UTC. Metode Date.parse menerima sebagai argumennya
sebuah representasi string atas tanggal dan waktu, dan menghasilkan jumlah
milidetik antara tengah malam 1 Januari 1970 dan tanggal dan waktu
terspesifikasi. Nilai ini dapat dikonversi menjadi sebuah objek Date dengan statemen
var sTanggal = new
Date( jumlahMiliDetik );
yang melewatkan kepada konstruktor Date jumlah milidetik sejak tengah
malam 1 Januari 1970, untuk objek Date.
8.6 Objek Boolean dan Number
JavaScript menyediakan objek Boolean dan Number sebagai objek pembungkus (wrapper) untuk nilai boolean true/false dan untuk bilangan. Objek
pembungkus ini mendefinisikan metode-metode dan properti-properti yang berguna
untuk memanipulasi nilai boolean dan bilangan. Kedua objek ini juga menambahkan
fungsionalitas untuk bekerja dengan tipe-tipe data sederhana.
Ketika sebuah program JavaScript
memerlukan suatu nilai boolean, ia secara otomatis menciptakan sebuah objek
Boolean untuk menyimpan nilai tersebut. Programer JavaScript dapat menciptakan
objek Boolean secara eksplisit dengan statemen
var b = new
Boolean( nilaiBoolean );
Argumen konstruktor nilaiBoolean menetapkan apakah nilai
dari objek Boolean bernilai true atau false. Jika nilaiBoolean
adalah false, 0, null, Number.NaN, atau sebuah string kosong (“”), atau jika tidak ada
argumen yang disediakan, maka objek Boolean
yang baru akan memuat false.
Sebaliknya, objek Boolean yang baru
akan memuat true. Gambar 8.10
mencantumkan metode-metode dari objek Boolean.
JavaScript secara otomatis menciptakan
objek Number untuk menciptakan nilai
numerik di dalam sebuah program JavaScript. Programer JavaScript dapat
mencipatakan sebuah objek Number
dengan statemen
var n = new
Number( nilaiNumerik );
Argumen konstruktor nilaiNumerik merupakan angka yang akan
disimpan di dalam objek. Meskipun Anda dapat secara eksplisit menciptakan objek
Number, biasanya penerjemah
JavaScript akan menciptakannya secara otomatis bila dibutuhkan. Gambar 8.11
mencantumkan metode-metode dan properti-properti dari objek Number.
Metode
|
Penjelasan
|
toString()
|
Menghasilkan string “true” jika nilai
dari objek Boolean adalah true; sebaliknya, menghasilkan string “false”.
|
valueOf()
|
Menghasilkan nilai true jika objek
Boolean adalah true; sebaliknya, menghasilkan nilai false.
|
Gambar 8.10 Metode-metode objek Bolean
Metode atau Properti
|
Penjelasan
|
toString( radiks
)
|
Menghasilkan representasi string atas
angka. Argumen opsional radiks (sebuah angka dari 2 sampai 36) menetapkan
basis angka. Sebagai contoh, radiks 2 menghasilkan representasi biner ,
radiks 8 menghasilkan representasi oktal, 10 menghasilkan representasi
desimal, dan 16 menghasilkan representasi heksadesimal.
|
valueOf()
|
Returns the numeric value.
|
Number.MAX_VALUE
|
Properti ini merepresentasikan angka
terbesar yang dapat disimpan di dalam sebuah program JavaScript, berkisar 1.79E+308.
|
Number.MIN_VALUE
|
Properti ini merepresentasikan angka
terkecil yang dapat disimpan di dalam sebuah program JavaScript, berkisar 5.00E–324.
|
Number.NaN
|
Properti ini merepresentasikan not a number---sebuah angka yang
dihasilkan dari sebuah ekspresi aritmatik yang tidak menghasilkan sebuah
angka (misalnya, ekspresi parseInt(“hallo”)
tidak dapat mengkonversi string “hallo”
menjadi sebuah angka, jadi parseInt
akan menghasilkan Number.NaN.
Untuk menentukan apakah sebuah nilai adalah NaN, uji hasil dengan fungsi isNaN,
yang menghasilkan true jika nilai
tersebut adalah NaN; sebaliknya,
ia menghasilkan false.
|
Number.NEGATIVE_INFINITY
|
Properti ini merepresentasikan sebuah
nilai yang kurang dari -Number.MAX_VALUE.
|
Number.POSITIVE_INFINITY
|
Properti ini merepresentasikan sebuah
nilai yang lebih besar dari Number.MAX_VALUE.
|
Gambar 8.11 Metode-metode dari objek Number
8.7 Objek document
Objek document digunakan untuk
memanipulasi dokumen yang dapat dilihat pada jendela penjelajah web. Objek document memiliki banyak properti dan
metode, seperti metode document.write
dan document.writeln, yang keduanya
telah digunakan pada banyak contoh program JavaScript sebelumnya. Gambar 8.12
menunjukkan metode-metode dan properti-properti dari objek document yang digunakan pada bab ini.
Metode atau Properti
|
Penjelasan
|
getElementById(
id )
|
Menghasilkan simpul DOM yang
merepresentasikan elemen XHTML dengan atribut id yang cocok dengan id.
|
write(
string )
|
Menulis string pada dokumen XHTML
sebagai kode XHTML.
|
writeln(
string )
|
Menulis string pada dokumen XHTML
sebagai kode XHTML dan menambahkan sebuah karakter garis-baru di akhir.
|
cookie
|
Sebuah string yang memuat nilai-nilai
dari semua cookies yang disimpan
pada komputer pengguna untuk dokumen sekarang.
|
lastModified
|
Tanggal dan waktu ketika dokumen ini
terakhir kali dimodifikasi.
|
Gambar 8.12 Metode-metode dan properti-properti dari objek document
8.8 Objek window
Objek window menyediakan beberapa
metode untuk memanipulasi jendela penjelajah. Skrip berikut menunjukkan
beberapa properti dan metode dari objek window
yang umum dipakai dan menggunakannya untuk menciptakan situs web yang memuat
banyak jendela penjelajah. Gambar 8.13 memampukan pengguna untuk menciptakan
sebuah jendela penjelajah yang baru dengan mengisi formulir XHTML dan mengklik
tombol Submit. Skrip ini juga
memampukan pengguna untuk menambahkan teks pada jendela yang baru dan
menavigasi jendela ke URL yang berbeda.
Skrip diawali pada baris 10. Baris 12
mendeklarasikan sebuah variabel yang merujuk ke jendela baru. Anda menamakan
jendela baru sebagai jendela anak karena ia diciptakan dan dikendalikan oleh
jendela induk pada skrip ini. Baris 14-50 mendefinisikan fungsi ciptakanJendelaAnak, yang menentukan
fitur-fitur yang diseleksi oleh pengguna dan menciptakan sebuah jendela anak
dengan fitur-fitur tersebut. Baris 18-20 mendeklarasikan beberapa variabel
untuk menyimpan status dari checkbox
(kotak periksa) pada halaman. Baris 23-38 menetapkan setiap variabel menjadi “yes” atau “no” berdasarkan apakah kotak periksa dicentang atau tidak.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
<?xml
version = "1.0" encoding = "utf-8"?>
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Gambar 8.13: jendela.html -->
<!-- Menggunakan objek window untuk menciptakan dan memodifikasi jendela
anak. -->
<html xmlns =
"http://www.w3.org/1999/xhtml">
<head>
<title>Menggunakan
Objek window</title>
<script type =
"text/javascript">
<!--
var jendelaAnak; // variabel untuk
mengendalikan jendela anak
function ciptakanJendelaAnak()
{
// semua variabel memuat
"yes" atau "no"
// untuk memngenable atau mendisable
sebuah fitur pada jendela anak
var toolBar;
var menuBar;
var scrollBars;
// menentukan apakah kotak-periksa
Tool Bar dicentang
if ( document.getElementById(
"toolBarCheckBox" ).checked )
toolBar = "yes";
else
toolBar = "no";
// menentukan apakah kotak-periksa
Menu Bar dicentang
if ( document.getElementById(
"menuBarCheckBox" ).checked )
menuBar = "yes";
else
menuBar = "no";
// menentukan apakah kotak-periksa
Scroll Bar dicentang
if ( document.getElementById(
"scrollBarsCheckBox" ).checked )
scrollBars = "yes";
else
scrollBars = "no";
//meneampilkan jendela dengan
fitur-fitur terseleksi
jendelaAnak = window.open(
"", "",
",toolbar = " + toolBar
+
",menubar = " + menuBar
+
",scrollbars = " +
scrollBars );
// mendisable tombol
document.getElementById( "closeButton"
).disabled = false;
document.getElementById( "modifyButton"
).disabled = false;
document.getElementById( "setURLButton"
).disabled = false;
} // akhir fungsi ciptakanJendelaAnak
// menyisipkan teks dari textbox pada
jendela anak
function modifikasiJendelaAnak()
{
if ( jendelaAnak.closed )
alert( "Anda berinteraksi
dengan sebuah jendela tertutup" );
else
jendelaAnak.document.write(
document.getElementById(
"teksUntukAnak" ).value );
} // akhir fungsi modifikasiJendelaAnak
// menutup jendela anak
function tutupJendelaAnak()
{
if ( jendelaAnak.closed )
alert( "Anda berinteraksi
dengan sebuah jendela tertutup" );
else
jendelaAnak.close();
document.getElementById( "closeButton"
).disabled = true;
document.getElementById( "modifyButton"
).disabled = true;
document.getElementById( "setURLButton"
).disabled = true;
} // akhir fungsi tutupJendelaAnak
// menetapkan URL dari jendela anak
menjadi URL
// pada URLAnak jendela induk
function setURLJendelaAnak()
{
if ( jendelaAnak.closed )
alert( "Anda berinteraksi
dengan sebuah jendela tertutup" );
else
jendelaAnak.location =
document.getElementById(
"URLAnak" ).value;
} // akhir fungsi setJendelaAnak
//-->
</script>
</head>
<body>
<h1>Hallo, ini adalah
jendela utama</h1>
<p>Silahkan centang
fitur-fitur untuk mengaktifkannya pada jendela anak<br/>
<input id = "toolBarCheckBox"
type = "checkbox" value = ""
checked = "checked"
/>
<label>Tool Bar</label>
<input id = "menuBarCheckBox"
type = "checkbox" value = ""
checked = "checked"
/>
<label>Menu Bar</label>
<input id = "scrollBarsCheckBox"
type = "checkbox" value = ""
checked = "checked"
/>
<label>Scroll Bars</label></p>
<p>Silahkan masukkan teks
yang ingin Anda tampilkan
pada jendela anak<br/>
<input id =
"teksUntukAnak" type = "text"
value = "<h1>Hallo,
Saya adalah sebuah jendela anak.</h1> " />
<input id =
"createButton" type = "button"
value = "Ciptakan Jendela
Anak" onclick = "ciptakanJendelaAnak()" />
<input id=
"modifyButton" type = "button" value = "Modifikasi
Jendela Anak"
onclick = "modifikasiJendelaAnak()"
disabled = "disabled" />
<input id =
"closeButton" type = "button" value = "Tutup Jendela
Anak"
onclick = "tutupJendelaAnak()"
disabled = "disabled" /></p>
<p>URL untuk jendela lain
adalah: <br/>
<input id =
"URLAnak" type = "text" value = "./" />
<input id =
"setURLButton" type = "button" value = "Tetapkan
URL Anak"
onclick =
"setURLJendelaAnak()" disabled = "disabled"
/></p>
</body>
</html>
|
Gambar 8.13 Penggunaan objek window untuk
menciptakan dan memodifikasi jendela
Gambar 41-44 menggunakan metode open dari objek window untuk menciptakan jendela anak. Metode open memiliki tiga parameter. Parameter pertama adalah URL dari
halaman yang akan dibuka pada jendela baru, dan parameter kedua adalah nama
jendela. Jika Anda menetapkan atribut target
dari sebuah elemen a (anchor) untuk
merespon nama sebuah jendela, maka href dari link akan dibuka pada jendela.
Pada contoh ini, Anda melewatkan dua string kosong kepada window.open sebagai dua nilai parameter pertama karena Anda ingin
membuka jendela baru dengan halaman kosong, dan Anda menggunakan metode yang
berbeda dalam memanipulasi URL jendela anak.
Parameter ketiga pada metode open adalah sebuah string yang
dipisahkan dengan koma, dengan semua nama fitur huruf kecil, masing-masing
diikuti dengan sebuah tanda = dan
sebuah “yes” atau “no” untuk menentukan apakah fitur
tersebut ditampilkan pada jendela baru atau tidak. Jika parameter-parameter ini
diabaikan, maka penjelajah web akan menciptakan sebuah jendela baru yang memuat
halaman kosong, tanpa judul dan semua fitur tersedia.
Baris 53-60 mendefinisikan fungsi modifikasiJendelaAnak, yang menambahkan
sebaris teks pada isi dari jendela anak. Pada baris 55, skrip menentukan apakah
jendela anak ditutup atau tidak. Fungsi modifikasiJendelaAnak
menggunakan properti jendelaAnak.closed
untuk mendapatkan sebuah nilai boolean yang bernilai true jika jendela anak ditutup dan false jika jendela anak masih terbuka. Jika jendela ditutup, maka
sebuah kotak alert akan ditampilkan
untuk memberitahu pengguna bahwa jendela sekarang telah ditutup dan tidak dapat
dimodifikasi. Jika jendela anak masih terbuka, baris 58-59 akan mendapatkan
teks dari masukan teksUntukAnak
(baris 103-104) pada formulir XHTML pada jendela induk dan menggunakan metode document.write untuk menuliskan teks
ini pada jendela anak.
Fungsi tutupJendelaAnak (baris 63-70) juga menentukan apakah jendela anak
ditutup. Jika jendela anak ditutup, maka skrip akan menampilkan sebuah kotak alert untuk memberitahu pengguna bahwa
jendela telah tertutup. Jika jendela anak terbuka, maka baris 68 akan
menutupnya menggunakan metode jendelaAnak.close.
Baris 70-72 menonaktifkan tombol-tombol yang berinteraksi dengan jendela anak.
Fungsi setURLJendelaAnak (baris 77-84) menyalin isi dari bidang teks URLAnak ke properti location dari jendela anak. Jika
jendela anak masih terbuka, maka baris 81-82 akan menetapkan properti location dari jendela anak menjadi
string pada kotak teks URLAnak. Aksi
ini akan mengubah URL dari jendela anak dan ekivalen dengan pengetikan sebuah
URL baru pada batang alamat jendela.
Skrip berakhir pada baris 86. Baris
88-116 memuat tubuh dari dokumen XHTML, yang memuat sebuah formulir dengan
kotak periksa, tombol, kotak teks, dan label. Skrip menggunakan elemen-elemen
formulir yang didefinisikan di dalam tubuh untuk mendapatkan masukan dari
pengguna. Baris 106, 108, 110, dan 115 menetapkan atribut onclick dari tombol-tombol XHTML. Setiap tombol ditetapkan untuk
memanggil sebuah fungsi JavaScript terkait ketika diklik.
Gambar 8.14 memuat beberapa metode dan
properti yang umum digunakan dari objek window.
Metode atau Properti
|
Penjelasan
|
open( url,
nama, opsi )
|
Menciptakan sebuah jendela baru
dengan URL jendela ditetapkan menjadi url,
nama ditetapkan menjadi nama, dan
fitur-fitur ditetapkan oleh string yang dilewatkan sebagai opsi.
|
prompt(
prompt, default )
|
Menampilkan sebuah kotak dialog untuk
meminta masukan dari pengguna. Teks dari dialog adalah prompt, dan nilai defaultnya ditetapkan menjadi default.
|
close()
|
Menutup jendela sekarang dan
menghapus objeknya dari memori.
|
focus()
|
Metode ini mengaktifkan fokus pada
jendela (menempatkan jendela pada latar depan).
|
blur()
|
Metode ini menonaktifkan fokus dari
jendela (menempatkan jendela di latar belakang).
|
window.document
|
Properti ini memuat objek document yang merepresentasikan
dokumen yang sekarang berada di dalam jendela.
|
window.closed
|
Properti ini memuat sebuah nilai
boolean yang ditetapkan true jika
jendela ditutup, dan false jika
jendela terbuka.
|
window.opener
|
Properti ini memuat objek window dari jendela yang membuka
jendela sekarang.
|
Gambar 8.13 Metode-metode dan properti-properti dari objek window
8.9 Menggunakan Cookie
Cookie merupakan
sepenggal data yang disimpan pada komputer pengguna untuk menyimpan informasi
tentang klien selama dan antar sesi penjelajah. Situs web dapat menyimpan cookie pada komputer klien untuk merekam
preferensi pengguna atau informasi lain yang dapat didapatkan oleh situs web
selama kunjungan klien. Sebagai contoh, situs web dapat memperoleh nama
pengguna dari sebuah cookie dan
menggunakannya untuk menampilkan pesan selamat datang.
Microsoft Internet Explorer dan Mozilla
Firefox menyimpan cookie sebanyak
file teks kecil pada komputer pengguna. Ketika seorang pengguna mengujungi
sebuah situs web, penjelajah akan mencari sembarang cookie yang ditulis oleh skrip pada situs itu.
Cookie dapat diakses
dalam JavaScript melalui properti cookie
dari objek document. JavaScript memperlakukan sebuah cookie sebagai string teks. Sembarang fungsi atau metode string
standar dapat memanipulasi cookie. Cookie memiliki sintaks “pengenal = nilai”, dimana pengenal adalah sembarang pengenal
variabel JavaScript, dan nilai
adalah nilai dari variabel cookie.
Ketika terdapat cookie lebih dari
satu untuk sebuah situs web, pasangan pengenal-nilai dipisahkan oleh titik-koma
pada string document.cookie.
Cookie berbeda dari
string biasa karena ia memiliki tanggal kadaluarsa (penjelajah web akan
menghapusnya bila melebihi tanggal itu). Tanggal ini dapat didefinisikan dengan
menetapkan properti expires pada
string cookie. Jika tanggal
kadaluarsa cookie tidak ditetapkan,
maka cookie akan kadaluarsa secara
default (pengguna menutup jendela penjelajah). Cookie dapat dihapus dengan menetapkan properti expires menjadi tanggal dan waktu
lampau.
Operator penugasan tidak menulis-ulang
(dengan menghapus isi lama sebelum menulis data baru), tetapi menyambungkan
data baru pada isi lama. Jadi, jika Anda menetapkan dua cookie
document.cookie = "nama1=nilai1;";
document.cookie
= "nama2=nilai2;";
maka document.cookie akan memuat “nama1
= nilai1; nama2 = nilai2”.
Gambar 8.15 menggunakan sebuah cookie untuk menyipman nama pengguna dan
menampilkan pesan selamat datang. Contoh ini memperbaiki fungsionalitas pada
contoh pada Gambar 4.11 dengan mensyaratkan pengguna untuk memasukkan nama
selama kunjungan pertama pada halaman web. Pada tiap kunjungan berikutnya,
skrip akan menampilkan nama pengguna yang disimpan di dalam cookie.
Baris 10 memulai skrip. Baris 12-13
mendeklarasikan variabel-variabel yang diperlukan untuk mendapatkan waktu, dan
baris 14 mendeklarasikan variabel untuk menyimpan nama pengguna. Baris 16-27
memuat statemen if...else yang sama
seperti pada Gambar 4.11 untuk menampilkan pesan selamat datang yang sensitif
terhadap waktu.
Baris 30-66 memuat kode yang dipakai
untuk memanipulasi cookie. Baris 30
menentukan apakah sebuah cookie ada
pada komputer klien atau tidak. Ekspresi document.cookie
dievaluasi menjadi true jika sebuah cookie ada. Jika cookie tidak ada, maka skrip akan meminta pengguna untuk memasukkan
nama (baris 45). Skrip menciptakan sebuah cookie
yang memuat string “nama = “, yang
diikuti dengan salinan dari nama pengguna yang dihasilkan oleh fungsi escape (baris 49). Fungsi escape mengkonversi sembarang karakter
non-alfanumerik, seperti spasi dan titik-koma, di dalam string menjadi runtun escape heksadesimal dengan bentuk “%XX”, dimana XX adalah nilai ASCII heksadesimal dari karakter spesial. Sebagai
contoh, jika nama memuat nilai “David
Maneaki”, maka statemen escape(nama)
akan dievaluasi menjadi “David
%20Maneaki”, karena nilai ASCII heksadesimal dari sebuah spasi kosong
adalah 20.
Jika cookie ada (pengguna telah mengunjungi halaman), maka skrip akan
mengekstrak nama pengguna dari string cookie
dan menyimpannya pada sebuah variabel lokal. Baris 34 menggunakan fungsi unescape untuk mengganti semua runtun escape di dalam cookie dengan karakter biasa.
Anda memanggil split pada cookieKu dengan = sebagai delimiter
untuk mendapatkan array cookieToken,
dengan elemen pertama sama dengan nama pengenal dan elemen kedua sama dengan
nilai pengenal. Baris 40 menugaskan nilai dari elemen kedua di dalam array cookieToken (nilai aktual yang disimpan
di dalam cookie) kepada variabel nama. Baris 52-53 menambahkan pesan
selamat datang pada halaman web menggunakan nama pengguna yang disimpan di dalam
cookie.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
<?xml
version = "1.0" encoding = "utf-8"?>
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Gambar 8.15: cookie.html -->
<!--
Menggunakan cookie untuk menyimpan data identifikasi pengguna. -->
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>Penggunaan
Cookie</title>
<script type =
"text/javascript">
<!--
var sekarang = new Date();
// jam dan tanggal sekarang
var jam =
sekarang.getHours(); // jam sekarang (0-23)
var nama;
if ( jam < 12 ) //
menentukan apakah pagi
document.write( "<h1>Selamat
Pagi, " );
else
{
jam = jam - 12; //
mengkonversi dari format 24-jam menjadi PM
// menentukan apakah sore
atau malam
if ( jam < 6 )
document.write(
"<h1>Selamat Sore, " );
else
document.write(
"<h1>Selamat Malam, " );
} // akhir else
// menentukan apakah ada cookie
if ( document.cookie )
{
// mengkonversi karakter
escape di dalam string cookie
// menjadi notasi biasa
var cookieKu=
unescape( document.cookie );
// memecah cookie menjadi token-token menggunakan = sebagai delimiter
var cookieToken =
cookieKu.split( "=" );
// menetapkan nama menjadi bagian dari
cookie
nama = cookieToken[ 1 ];
} // akhir if
else
{
// jika tidak ada cookie,
meminta pengguna untuk memasukkan nama
nama = window.prompt( "Silahkan
masukkan nama Anda", "David" );
// escape terhadap karakter
spesial di dalam string nama
// dan menambahkan nama pada
cookie
document.cookie =
"nama=" + escape( nama );
} // akhir else
document.writeln(
nama + ", selamat datang
ke pemrograman JavaScript!</h1>" );
document.writeln( "<a
href = 'javascript:wrongPerson()'> " +
"Klik di sini jika
Anda bukan " + nama + "</a>" );
// mereset cookie jika orang yang
salah
function wrongPerson()
{
// mereset cookie
document.cookie=
"nama=null;" +
" expires=Thu,
01-Jan-95 00:00:01 GMT";
// menjalankan-ulang halaman
untuk nama baru
location.reload();
} // akhir fungsi salahOrang
// -->
</script>
</head>
<body>
<p>Klik Refresh untuk
menjalankan skrip ini kembali</p>
</body>
</html>
|
Gambar 8.15 Menggunakan cookie untuk
menyimpan data identifikasi pengguna
Skrip ini memampukan pengguna untuk
mereset cookie, yang berguna pada
saat seseorang pengguna baru menggunakan komputer. Baris 54-55 menciptakan
sebuah hyperlink, ketika diklik, memanggil
fungsi JavaScript wrongPerson (baris
58-66). Baris 61-62 menetapkan nama cookie menjadi null dan properti expires
menjadi 1 Januari 1995 (atau sembarang tanggal di masa lampau). Internet
Explorer mendeteksi bahwa properti expires
ditetapkan menjadi sebuah tanggal di masa lampau dan menghapus cookie dari komputer pengguna.
Selanjutnya ketika halaman web dijalankan kembali, tidak akan ada cookie pada komputer pengguna. Metode reload dari objek location memaksa halaman untuk direfresh (baris 65). Karena cookie
sudah tidak ada lagi, skrip akan meminta pengguna untuk memasukkan nama baru.
8.10 HTML Halaman-Jamak dan Aplikasi JavaScript
Bebeberapa bab terdahulu telah
mengeksplorasi banyak konsep JavaScript dan bagaimana ia diaplikasikan pada
web. Contoh JavaScript berikutnya akan menggabungkan beberapa konsep tersebut
ke dalam satu halaman web. Gambar 8.16 menggunakan fungsi, cookie, array, loop, objek Date,
objek window, dan objek document untuk menciptakan sebuah
halaman yang memuat pesan selamat datang, kuis, citra acak, dan kutipan acak.
Anda telah menggunakan semua konsep tersebut sebelumnya, tetapi contoh ini akan
mengilustrasikan bagaimana konsep-konsep tersebut diaplikasikan bersamaan pada
satu halaman web.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
<?xml
version = "1.0" encoding = "utf-8"?>
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Gambar 8.16: akhir.html -->
<!--
Halaman selamat datang menggunakan beberapa konsep JavaScript. -->
<html xmlns =
"http://www.w3.org/1999/xhtml">
<head>
<title>Pengaplikasian
Semua Konsep JavaScript</title>
<script type =
"text/javascript">
<!--
var sekarang = new
Date(); // tanggal dan waktu sekarang
var jam =
sekarang.getHours(); // jam sekarang
// array dengan nama-nama citra
yang akan diseleksi secara acak
var gambar =
[ "EPT",
"GPP", "CPE", "GUI",
"PERF", "PORT", "SEO" ];
// array dengan beberapa kutipan yang
diseleksi secara acak
var kutipan = [ "Form
ever follows function.<br/>" +
" Louis Henri
Sullivan", "E pluribus unum." +
" (One composed of
many.) <br/> Virgil", "Is it a" +
" world to hide virtues
in?<br/> William Shakespeare" ];
// menuliskan tanggal dan waktu
sekarang pada halaman web
document.write( "<p>"
+ sekarang.toLocaleString() + "<br/></p>" );
// menentukan apakah sekarang
pagi
if ( jam < 12 )
document.write(
"<h2>Selamat Pagi, " );
else
{
jam = jam - 12; // mengkonversi dari format 24-jam menjadi 12-jam
// menentukan apakah sekarang sore atau
malam
if ( jam < 6 )
document.write(
"<h2>Selamat Sore, " );
else
document.write(
"<h2>Selamat Malam, " );
} // akhir else
// menentukan apakah ada cookie
if ( document.cookie )
{
// mengkonversi karakter
escape di dalam cookie
// menjadi notasi biasa
var cookieKu =
unescape( document.cookie );
// memecah cookie menjadi
token-token dengan = sebagai delimiter
var cookieToken =
myCookie.split( "=" );
// menetapkan nama menjadi
bagian dari cookie
nama = cookieToken[ 1 ];
} // akhir if
else
{
// jika tidak ada cookie, minta pengguna untuk memasukkan nama
nama = window.prompt( "Silahkan
masukkan nama Anda", "David"
);
// meng-escape karakter
spesial di dalam string nama
// dan menambahkan nama pada
cookie
document.cookie = "nama
=" + escape( nama );
} // akhir else
// menuliskan pesan selamat datang
pada halaman
document.writeln(
nama + ", selamat datang
ke pemrograman JavaScript!</h2>" );
// menuliskan link untuk
menghapus cookie
document.writeln( "<a
href = \"javascript:wrongPerson()\" > " +
"Klik di sini jika Anda
bukan " + nama + "</a><br/>" );
// menuliskan citra acak pada
halaman
document.write ( "<img
src = \"" +
gambar[ Math.floor(
Math.random() * 7 ) ] +
".gif\" /> <br/>"
);
// menuliskan kutipan acak pada
halaman
document.write ( kutipan[
Math.floor( Math.random() * 3 ) ] );
// menciptakan sebuah jendela
dengan semua kutipan di dalamnya
function semuaKutipan()
{
// menciptakan jendela anak
untuk kutipan
var jendelaKutipan =
window.open( "", "", "resizable=yes, " +
"toolbar=no,
menubar=no, status=no, location=no," +
" scrollBars=yes"
);
jendelaKutipan.document.write( "<p>" );
// menjelajah semua kutipan dan menuliskannya pada jendela baru
for ( var i =
0; i < kutipan.length; i++ )
jendelaKutipan.document.write( ( i + 1 ) + ".) " +
kutipan[ i ] +
"<br/><br/>");
// menuliskan link untuk
menutup jendela baru
jendelaKutipan.document.write( "</p><br/><a href =
" +
"\"javascript:window.close()\">Tutup Jendela
Ini</a>" );
} // akhir fungsi semuaKutipan
// mereset cookie dokumen jika
orang yang salah
function wrongPerson()
{
// mereset cookie
document.cookie=
"nama=null;" +
" expires=Thu,
01-Jan-95 00:00:01 GMT";
// memuat-ulang halaman untuk mendapatkan nama baru setelah cookie dihapus
location.reload();
} // akhir fungsi wrongPerson
// membuka jendela baru untuk
file kuis2.html
function bukaKuis()
{
window.open( "kuis.html", "", "resizable=yes,
", "toolbar = no, " +
"menubar = no,
scrollBars = no" );
} // akhir fungsi bukaKuis
// -->
</script>
</head>
<body>
<p><a href =
"javascript:semuaKutipan()">Tampilkan Semua
Kutipan</a></p>
<p id = "kuisSpot">
<a href =
"javascript:bukaKuis()">Silahkan Isi Kuis Ini</a></p>
<script type =
"text/javascript">
// variabel untuk mendapatkan
tanggal dan waktu modifikasi terakhir
var modTanggal = new
Date( document.lastModified );
// menuliskan tanggal dan waktu
modifikasi terakhir pada halaman
document.write ( "Halaman ini
terakhir dimodifikasi pada " +
modTanggal.toLocaleString() );
</script>
</body>
</html>
|
Skrip diawali pada baris 10. Baris
12-13 mendeklarasikan beberapa variabel yang diperlukan untuk menentukan waktu
tunda. Baris 16-23 menciptakan dua array, yang isinya akan diseleksi secara
acak. Halaman web ini memuat array gambar
dan array kutipan. Baris 26
menuliskan tanggal dan waktu lokal pengguna menggunakan metode toLocaleString dari objek Date. Baris 29-40 menampilkan sebuah
pesan selamat datang menggunakan kode yang sama seperti pada Gambar 4.11. Skrip
akan menggunakan cookie yang ada
untuk mendapatkan nama pengguna (baris 43-54) atau meminta nama dari pengguna
baru. Baris 66-67 menuliskan pesan selamat datang pada halaman web, dan baris
70-71 menghasilkan link untuk mereset cookie.
Baris 74-79 menuliskan citra acak dan kutipan acak pada halaman web. Skrip
memiliki secara acak dengan memilih indeks pada tiap array.
Gambar 8.16 Halaman selamat datang menggunakan beberapa konsep JavaScript
Fungsi semuaKutipan (baris 82-98) menggunakan objek window dan sebuah loop for
untuk membuka jendela baru yang memuat semua kutipan pada array kutipan. Skrip tidak menugaskan sebuah
URL atau sebuah nama pada jendela ini, tetapi ia menetapkan fitur-fitur jendela
untuk ditampilkan. Baris 88 membuka sebuah paragraf baru pada jendelaKutipan. Loop for (baris 91-93) menjelajah array
kutipan dan menuliskan setiap kutipan pada jendelaKutipan.
Baris 96-97 menutup paragraf pada jedelaKutipan, menyisipkan sebuah baris baru,
dan menambahkan sebuah link di bawah halaman sehingga pengguna dapat menutup
jendela. Perhatikan bahwa semuaKutipan
yang menghasilkan sebuah halaman web dituliskan secara keselurutan menggunakan
kode JavaScript.
Fungsi wrongPerson (baris 101-109) mereset
nama pengguna pada cookie. Fungsi ini identika dengan fungsi wrongPerson pada Gambar 8.15.
Fungsi bukaKuis (baris 112-116) membuka sebuah jendela baru untuk
menampilkan kuis. Dengan menggunakan metode window.open, skrip menghasilkan sebuah jendela baru yang memuat kuis.html (baris 114-115).
Skrip utama berakhir pada baris 118,
dan tubuh dari dokumen XHTML diawali pada baris 120. Baris 121 menciptakan link yang memanggil fungsi semuaKutipan ketika ia diklik. Baris
123-124 menciptakan sebuah elemen paragraf yang memuat atribut id = “kuisSpot”. Paragraf ini memuat sebuah link yang memanggil fungsi bukaKuis.
No comments:
Post a Comment