Teknik Pemrograman Lanjut
Modul ini mengenalkan suatu teknik pemrograman yang lebih tinggi. Dalam bagian ini
Anda akan mempelajari rekursif dan tipe data abstrak.
Setelah menyelesaikan pelajaran ini, diharapkan Anda dapat:
1. Memahami dan menggunakan rekursif
2. Mengetahui perbedaan antara stacks dan queues
2. Mengimplementasikan suatu implementasi sequensial dari stacks dan queues
3. Mengimplementasikan suatu implementasi linked dari stacks and queues
4. Menggunakan Collection classes yang ada
3.2 Rekursif
3.2.1 Apa yang dimaksud dengan Rekursif?
Rekursif adalah teknik pemecahan masalah yang powerful dan dapat digunakan ketika
inti dari masalah terjadi berulang kali. Tentu saja, tipe dari masalah ini dapat dipecahkan
mengunakan perkataan berulang-ulang (i.e., menggunakan konstruksi looping seperti
for, while dan do-while).
Sesungguhnya, iterasi atau perkataan berulang-ulang merupakan peralatan yang lebih
efisien jika dibandingkan dengan recursif tetapi recursion menyediakan solusi yang lebih
baik untuk suatu masalah. Pada rekursif, method dapat memanggil dirinya sendiri. Data
yang berada dalam method tersebut seperti argument disimpan sementara kedalam
stack sampai method pemanggilnya diselesaikan.
3.2.2 Rekursif Vs. Iterasi
Untuk pengertian yang lebih baik dari rekursif, mari kita lihat pada bagaimana macam-
macam dari teknik iterasi. Dalam teknik-teknik tersebut dapat juga kita lihat
penyelesaian sebuah loop yang lebih baik menggunakan rekursif dari pada iterasi.
Menyelesaikan masalah dengan perulangan menggunakan iterasi secara tegas juga
digunakan pada struktur kontrol pengulangan. Sementara itu, untuk rekursif, task
diulangi dengan memanggil sebuah method pengulangan. Maksud dari hal tersebut
adalah untuk menggambarkan sebuah masalah kedalam lingkup yang lebih kecil dari
pengulangan itu sendiri. Pertimbangan suatu perhitungan yang faktorial dalam
penentuan bilangan bulat. Definisi rekursif dari hal tersebut dapat diuraikan sebagai
berikut: factorial(n) = factorial(n-1) * n; factorial(1) = 1. Sebagai contohnya, nilai
faktorial dari 2 sama dengan fatorial (1)*2, dimana hasilnya adalah 2. Faktorial dari 3
adalah 6, dimana sama dengan faktorial dari (2)*3.
Pengenalan Pemrograman 2 1
Gambar 1: Contoh Factorial
Dengan iterasi, proses diakhiri ketika kondisi loop gagal atau salah. Dalam kasus dari
penggunaan rekursif, proses yang berakhir dengan kondisi tertentu disebut
permasalahan dasar yang telah tercukupi oleh suatu pembatasan kondisi. Permasalahan
yang mendasar merupakan kejadian yang paling kecil dari sebuah masalah. Sebagai
contohnya, dapat dilihat pada kondisi rekursif pada faktorial, kasus yang mudah adalah
ketika inputnya adalah 1. 1 dalam kasus ini merupakan inti dari masalah.
Penggunaan dari iterasi dan rekursif dapat bersama-sama memandu loops jika hal ini
tidak digunakan dengan benar.
Keuntungan iterasi dibandingkan recursion adalah performance yang lebih baik. Hal
tersebut lebih cepat untuk recursion sejak terbentuknya sebuah parameter pada sebuah
method yang disebabkan oleh suatu CPU time. Bagaimanapun juga, rekursif mendorong
practice software engineering yang lebih baik, sebab teknik ini biasanya dihasilkan pada
kode yang singkat yang lebih mudah untuk dimengerti dan juga mempromosikan
reuseability pada suatu solusi yang telah diterapkan.
Memilih antara iterasi dan rekursif merupakan masalah dari menjaga keseimbangan
antara baiknya sebuah performance dan baiknya software engineering.
3.2.3 Factorials: Contoh
Listing program berikut ini menunjukkan bagaimana menghitung faktorial menggunakan
teknik iterasi.
class FactorialIter {
static int factorial(int n) {
int result = 1;
for (int i = n; i > 1; i--) {
result *= i;
}
Pengenalan Pemrograman 2 2
return result;
}
public static void main(String args[]) {
int n = Integer.parseInt(args[0]);
System.out.println(factorial(n));
}
}
Dibawah ini merupakan listing program yang sama tetapi menggunakan rekursif.
class FactorialRecur {
static int factorial(int n) {
if (n == 1) { /* The base case */
return 1;
}
/* Recursive definition; Self-invocation */
return factorial(n-1)*n;
}
public static void main(String args[]) {
int n = Integer.parseInt(args[0]);
System.out.println(factorial(n));
}
}
3.2.4 Print n in any Base: Contoh yang lain
Sekarang, pertimbangan dari masalah dalam pencetakkan suatu angka desimal yang
nilai basenya telah ditetapkan oleh pengguna. Ingat bahwa solusi dalam hal ini untuk
menggunakan repetitive division dan untuk menulis sisa perhitungannya. Proses akan
berakhir ketika sisa hasil pembagian kurang dari base yang ditetapkan. Dapat
diasumsikan jika nilai input desimal adalah 10 dan kita akan mengkonversinya menjadi
base 8. Inilah solusinya dengan perhitungan menggunakan pensil dan kertas.
Dari solusi diatas, 10 adalah sama dengan 12 base 8.
Contoh berikutnya. Nilai input desimalnya adalah 165 dan akan dikonversi ke base 16.
Pengenalan Pemrograman 2 3
165 adalah sama dengan A5 base 16. Catatan: A=10.
Berikut ini merupakan solusi iterative untuk masalah diatas.
class DecToOthers {
public static void main(String args[]) {
int num = Integer.parseInt(args[0]);
int base = Integer.parseInt(args[1]);
printBase(num, base);
}
static void printBase(int num, int base) {
int rem = 1;
String digits = "0123456789abcdef";
String result = "";
/* the iterative step */
while (num!=0) {
rem = num%base;
num = num/base;
result = result.concat(digits.charAt(rem)+"");
}
/* printing the reverse of the result */
for(int i = result.length()-1; i >= 0; i--) {
System.out.print(result.charAt(i));
}
}
}
Berikut ini merupakan recursion untuk masalah yang sama dengan solusi sebelumnya.
class DecToOthersRecur {
static void printBase(int num, int base) {
String digits = "0123456789abcdef";
/* Recursive step*/
if (num >= base) {
printBase(num/base, base);
}
/* Base case: num < base */
System.out.print(digits.charAt(num%base));
}
public static void main(String args[]) {
int num = Integer.parseInt(args[0]);
int base = Integer.parseInt(args[1]);
printBase(num, base);
}
}
Pengenalan Pemrograman 2 4
3.3 Abstract Data Type
3.3.1 Apa yang Dimaksud dengan Abstract Data Type?
Abstract Data Type (ADT) adalah kumpulan dari elemen-elemen data yang disajikan
dengan satu set operasi yang digambarkan pada elemen-elemen data tersebut. Stacks,
queues dan binary trees adalah tiga contoh dari ADT. Dalam bab ini, Anda akan
mempelajari tentang stacks dan queues.
3.3.2 Stacks
Stack adalah satu set atau urutan elemen data dimana manipulasi data dari elemen-
elemen hanya diperbolehkan pada tumpukan teratas dari stack. Hal ini merupakan
perintah pengumpulan data secara linier yang disebut “last in, first out” (LIFO). Stacks
berguna untuk bermacam-macam aplikasi seperti pattern recognition dan
pengkonversian antar notasi infix, postfix dan prefix .
Dua operasi yang dihubungkan dengan stacks adalah operasi push dan pop. Push berarti
memasukkan data kedalam stacks yang paling atas dimana pop sebagai
penunjuk/pointer untuk memindahkan elemen ke atas stacks. Untuk memahami
bagaimana cara kerja stacks, pikirkan bagaimana Anda dapat menambah atau
memindakan sebuah data dari tumpukan data. Pikiran Anda akan memberitahu Anda
untuk menambah atau memindahkan data hanya pada stack yang paling atas karena
jika menggunakan cara lain, dapat menyebabkan tumpukan stack akan terjatuh.
Dibawah ini merupakan ilustrasi bagaimana tampilan dari stacks.
n-1
...
6
5 Jayz top
4 KC
3 Jojo
2 Toto
1 Kyla
0 DMX bottom
Tabel 1.2.2: Ilustrasi Stack
Stack akan berarti penuh jika jangkauan cell teratas disimbolkan dengan n-1. Jika nilai
teratas / top sama dengan -1, stack berarti kosong.
Pengenalan Pemrograman 2 5
3.3.3 Queues
Queues adalah contoh lain dari ADT. Hal ini merupakan perintah pengumpulan data yang
disebut “first-in, first-out”. Aplikasi ini meliputi jadwal pekerjaan dalam operating
system, topological sorting dan graph traversal.
Enqueue dan dequeue merupakan operasi yang dihubungkan dengan queues. Enqueu
menunjuk pada memasukkan data pada akhir queue dimana dequeue berarti
memindahkan elemen dari queue tersebut. Untuk mengingat bagaimana queue bekerja,
ingatlah arti khusus dari queue yaitu baris. Berikut ini bagaimana cara kerja queue.
Siapa yang akan mendapatkan kesempatan pertama untuk bertemu bintang idolanya
dari mereka yang sedang menunggu dalam sebuah barisan? Seharusnya orang pertama
yang berada pada barisan tersebut. Orang ini mendapat kesempatan pertama untuk
meninggalkan barisan. Hubungkan hal tersebut dengan bagaimana queue bekerja.
Berikut ini merupakan ilustrasi dari bagaimana tampilan dari queue.
0 1 2 3 4 5 6 7 8 9 ... n-1
Eve Jayz KC Jojo Toto Kyla DMX
fron
t
end Insert
Delete
Tabel 1.2.3: Ilustrasi Queue
Queue akan kosong jika nilai end kurang dari front. Sementara itu, akan penuh jika end
sama dengan n-1.
3.3.4 Sequential and Linked Representation
ADTs biasanya dapat diwakilkan menggunakan sequential dan linked representation. Hal
ini memudahkan untuk membuat sequential representation dengan menggunakan array.
Bagaimanapun juga, masalah dengan menggunakan array adalah pembatasan size,
yang membuatnya tidak fleksibel. Dengan menggunakan array, sering terjadi
kekurangan atau kelebihan space memory. Mempertimbangkan hal tersebut, Anda harus
membuat sebuah array dan mendeklarasikannya agar mampu menyimpan 50 elemen.
Jika user hanya memasukkan 5 elemen, maka 45 space pada memory akan sia-sia.
Disisi lain, jika user ingin memasukkan 51 elemen, space yang telah disediakan didalam
array tidak akan cukup.
Dibandingkan dengan sequential representation, linked representation lebih sedikit rumit
tetapi lebih fleksibel. Linked representation menyesuaikan memory yang dibutuhkan oleh
user. Penjelasan lebih lanjut pada linked representation akan didiskusikan pada bab
berikutnya.
3.3.5 Sequential Representation dari Integer Stack
class SeqStack {
int top = -1; /* initially, the stack is empty */
int memSpace[]; /* storage for integers */
int limit; /* size of memSpace */
Pengenalan Pemrograman 2 6
SeqStack() {
memSpace = new int[10];
limit = 10;
}
SeqStack(int size) {
memSpace = new int[size];
limit = size;
}
boolean push(int value) {
top++;
/* check if the stack is full */
if (top < limit) {
memSpace[top] = value;
} else {
top--;
return false;
}
return true;
}
int pop() {
int temp = -1;
/* check if the stack is empty */
if (top >= 0) {
temp = memSpace[top];
top--;
} else {
return -1;
}
return temp;
}
public static void main(String args[]) {
SeqStack myStack = new SeqStack(3);
myStack.push(1);
myStack.push(2);
myStack.push(3);
myStack.push(4);
System.out.println(myStack.pop());
System.out.println(myStack.pop());
System.out.println(myStack.pop());
System.out.println(myStack.pop());
}
}
3.3.6 Linked Lists
Sebelum mengimplementasikan linked representation dari stacks, pertama mari kita
pelejari bagaimana membuat linked representation. Dalam hal ini, kita akan
menggunakan linked lists.
Linked list merupakan struktur dinamis yang berlawanan dengan array, yang merupakan
struktur statis. Hal ini berarti linked list dapat tumbuh dan berkurang dalam size yang
bergantung pada kebutuhan user. Linked list digambarkan sebagai kumpulan dari nodes,
Yang masing-masing berisi data dan link atau pointer ke node berikutnya didalam list.
Gambar dibawah ini menunjukkan tampilan dari node.
Pengenalan Pemrograman 2 7
Gambar 2.6a: Sebuah node
Berikut ini merupakan contoh dari non-empty linked list dengan 3 node.
Gambar 3.6b: Non-empty linked list dengan tiga node
Berikut ini bagaimana class node diimplementasikan. Class ini dapat digunakan untuk
membuat linked list.
class Node {
int data; /* integer data contained in the node */
Node nextNode; /* the next node in the list */
}
class TestNode {
public static void main(String args[]) {
Node emptyList = null; /* create an empty list */
/* head points to 1st node in the list */
Node head = new Node();
/* initialize 1st node in the list */
head.data = 5;
head.nextNode = new Node();
head.nextNode.data = 10;
/* null marks the end of the list */
head.nextNode.nextNode = null;
/* print elements of the list */
Node currNode = head;
while (currNode != null) {
System.out.println(currNode.data);
currNode = currNode.nextNode;
}
}
}
Pengenalan Pemrograman 2 8
3.3.7 Linked Representation dari Integer Stack
Sekarang Anda telah mempelajari tentang linked list. Maka Anda telah siap untuk
menerapkan apa yang telah Anda pelajari untuk implementasi linked representation dari
stack.
class DynamicIntStack{
private IntStackNode top; /* head or top of the stack */
class IntStackNode { /* node class */
int data;
IntStackNode next;
IntStackNode(int n) {
data = n;
next = null;
}
}
void push(int n){
/* no need to check for overflow */
IntStackNode node = new IntStackNode(n);
node.next = top;
top = node;
}
int pop() {
if (isEmpty()) {
return -1;
/* may throw a user-defined exception */
} else {
int n = top.data;
top = top.next;
return n;
}
}
boolean isEmpty(){
return top == null;
}
public static void main(String args[]) {
DynamicIntStack myStack = new DynamicIntStack();
myStack.push(5);
myStack.push(10);
/* print elements of the stack */
IntStackNode currNode = myStack.top;
while (currNode!=null) {
System.out.println(currNode.data);
currNode = currNode.next;
}
System.out.println(myStack.pop());
System.out.println(myStack.pop());
}
}
Pengenalan Pemrograman 2 9
Gambar 1.2.7: Implementasi linked dari stack
3.3.8 Java Collections
Saat ini Anda telah diperkenalkan kepada dasar abstract data types. Pada intinya, Anda
telah mempelajari tentang dasar dari linked lists, stacks dan queue. Berita baik bahwa
abstract data types telah siap untuk diimplementasikan dan dimasukkan dalam Java.
Class Stack dan LinkedList diperbolehkan digunakan tanpa pengertian yang lengkap dari
konsep ini. Bagaimanapun juga, sebagai ilmuwan komputer, sangat penting untuk
mengerti konsep dari abstract data types. Oleh karena itu, penjelasan terperinci masih
disampaikan dalam bagian yang terdahulu. Dengan peluncuran dari J2SE5.0, queue
interface telah tersedia. Untuk detail pada class dan interface ini, dapat dilihat pada
dokumentasi Java API.
Kepada kita, Java telah menyajikan Collection classes dan interfaces yang lain, yang
semuanya dapat ditemukan di java.util package. Contoh dari Collection classes termasuk
LinkedList, ArrayList, HashSet dan TreeSet. Class tersebut benar-benar implementasi
dari collection interfaces yang berbeda. Induk hirarki dari collection interfaces adalah
collection interfaces itu sendiri. Sebuah collection hanya sebuah grup dari object yang
diketahui sebagai elemennya sendiri. Collection memperbolehkan penggandaan/salinan
dan tidak membutuhkan pemesanan elemen secara spesifik.
SDK tidak menyediakan implementasi built-in yang lain dari interface ini tetapi
mengarahkan subinterfaces, Set interfaces dan List interfaces diperbolehkan. Sekarang,
apa perbedaan dari kedua interface tersebut. Set merupakan collection yang tidak
dipesan dan tidak ada penggandaan didalamnya. Sementara itu, list merupakan
collection yang dipesan dari elemen-elemen dimana juga diperbolehkannya
penggandaan. HashSet, LinkedHashSet dan TreeSet suatu implementasi class dari Set
interfaces. ArrayList, LinkedList dan Vector suatu implementasi class dari List interfaces.
<root interface>
Collection
<interface>
Set
<interface>
List
<implementing classes> <implementing classes>
HashSet LinkedHashSet TreeSet ArrayList LinkedList Vector
Tabel 1.2.8a: Java collections
Berikut ini adalah daftar dari beberapa Collections methods yang disediakan dalam
Collection API dari Java 2 Platform SE v1.4.1. Pada Java 2 Platform SE v.1.5.0, methods
ini telah dimodifikasi untuk menampung generic types. Sejak generic types masih belum
selesai dibahas, sebaiknya mempertimbangkan method ini terlebih dahulu. Disarankan
bahwa Anda mengacu pada Collection methods yang terbaru dimana Anda lebih mudah
Pengenalan Pemrograman 2 10
mengerti generic types, yang akan didiskusikan pada chapter berikutnya.
Collection Methods
public boolean add(Object o)
Memasukkan Object o kedalam collection ini. Mengembalikan nilai true jika o telah
sukse ditambahkan kedalam collection.
public void clear()
Menghapus semua element dari collection ini.
public boolean remove(Object o)
Menghapus single instance dari Object o pada collection ini, jika hal tersebut telah
diinputkan. Mengembalikan nilai true jika o telah ditemukan dan dihapus dari
collection.
public boolean contains(Object o)
Mengembalikan nilai true jika collection ini berisi Object o.
public boolean isEmpty()
Mengembalikan nilai true jika collection ini tidak berisi object atau element apapun.
public int size()
Mengembalikan nomor dari elements pada collection ini.
public Iterator iterator()
Mengembalikan sebuah iterator yang menunjukkan kita pada isi collection ini.
public boolean equals(Object o)
Mengembalikan nilai jika Object o sama dengan yang ada pada collection.
public int hashCode()
Mengembalikan nilai hash code (i.e., the ID) untuk collection ini. Objects atau
collections yang sama memiliki nilai hash code atau ID yang sama.
Tabel 1.2.8b: Methods dari class Collection
Anda diharapkan mengacu pada dokumentasi API untuk mengetahui daftar lengkap dari
methods dalam Collection, List dan Set interface.
Saat ini kita akan melihat beberapa collection classes. Harap mengacu pada API untuk
daftar dari methods yang dimasukkan kedalam class ini.
Pada bagian sebelumnya, Anda telah melihat bagaimana mengimplementasikan linked
list dengan cara Anda sendiri. Java SDK juga telah menyediakan built-implementation
dari linked list untuk kita. LinkedList class berisi methods yang memperbolehkan linked
list digunakan seperti stacks, queue atau ADT yang lain. Listing program berikut ini
menunjukan bagaimana menggunakan class LinkedList.
Pengenalan Pemrograman 2 11
import java.util.*;
class LinkedListDemo {
public static void main(String args[]) {
LinkedList list = new LinkedList();
list.add(new Integer(1));
list.add(new Integer(2));
list.add(new Integer(3));
list.add(new Integer(1));
System.out.println(list + ", size = " + list.size());
list.addFirst(new Integer(0));
list.addLast(new Integer(4));
System.out.println(list);
System.out.println(list.getFirst() + ", " +
list.getLast());
System.out.println(list.get(2) + ", " + list.get(3));
list.removeFirst();
list.removeLast();
System.out.println(list);
list.remove(new Integer(1));
System.out.println(list);
list.remove(3);
System.out.println(list);
list.set(2, "one");
System.out.println(list);
}
}
ArrayList merupakan versi fleksibel dari array biasa. Yang mengimplementasikan List
interface. Telitilah kode berikut ini.
import java.util.*;
class ArrayListDemo {
public static void main(String args[]) {
ArrayList al = new ArrayList(2);
System.out.println(al + ", size = " + al.size());
al.add("R");
al.add("U");
al.add("O");
System.out.println(al + ", size = " + al.size());
al.remove("U");
System.out.println(al + ", size = " + al.size());
ListIterator li = al.listIterator();
while (li.hasNext())
System.out.println(li.next());
Object a[] = al.toArray();
for (int i=0; i<a.length; i++)
System.out.println(a[i]);
}
}
Pengenalan Pemrograman 2 12
HashSet merupakan sebuah implementasi dari Set interface yang berguna pada hash
table. Penggunaan suatu hash table lebih mudah dan cepat untuk melihat lebih detail
elemen-elemen yang ada. Table menggunakan suatu rumusan untuk menentukan
dimana suatu objek disimpan. Teliti program ini, yang menggunakan class HashSet.
import java.util.*;
class HashSetDemo {
public static void main(String args[]) {
HashSet hs = new HashSet(5, 0.5f);
System.out.println(hs.add("one"));
System.out.println(hs.add("two"));
System.out.println(hs.add("one"));
System.out.println(hs.add("three"));
System.out.println(hs.add("four"));
System.out.println(hs.add("five"));
System.out.println(hs);
}
}
TreeSet merupakan sebuah implementasi dari Set interface yang menggunakan tree.
Class ini memastikan bahwa yang disortir akan diurutkan secara ascending.
Pertimbangkan, bagaimana class TreeSet telah digunakan dalam listing program berikut
ini.
import java.util.*;
class TreeSetDemo {
public static void main(String args[]) {
TreeSet ts = new TreeSet();
ts.add("one");
ts.add("two");
ts.add("three");
ts.add("four");
System.out.println(ts);
}
}
Gambar 1.2.8: Contoh TreeSet
Pengenalan Pemrograman 2 13
3.4 Latihan
3.4.1 Faktor Persekutuan Terbesar
Faktor persekutuan terbesar (FPB) dari dua angka adalah angka yang terbesar selalu
dibagi oleh angka yang satunya, kemudian modulus atau sisa pembagian membagi
angka kedua dan seterusnya hingga sisa pembagian dari kedua angka tersebut sama
dengan nol. Menggunakan Euclid's method, buatlah dua kode untuk penghitungan dua
angka. Gunakan iterasi untuk kode program yang pertama dan rekursif untuk kode
program berikutnya.
Catatan pada algoritma Euclid :
1. Sebagai masukkan integers x dan y.
2. Ulangi step dibawah ini while y != 0
a. y = x % y;
b. x = Nilai lama y;
3. Return x.
Contoh, x = 14 dan y = 6.
y = x % y = 14 % 6 = 2
x = 6
y = x % y = 6 % 2 = 0
x = 2 (FPB)
3.4.2 Sequential Representation dari Integer Queue
Dengan menggunakan array, implementasikan sebuah integer queue seperti contoh
pada sequential stack.
3.4.3 Linked Representation dari Integer Queue
Dengan menggunakan ide dari linked list, implementasikan sebuah integer queue
dinamis seperti integer stack dinamis yang diperkenalkan seperti contoh berikut.
3.4.4 Address Book
Dengan menggunakan Java collection, buatlah sebuah program yang memperbolehkan
user untuk insert, delete dan view address. Setiap address berisi nama , alamat dan
nomor telepon dari orang yang mengisinya. Pengisian data dimasukkan dengan cara
queue tetapi penghapusan dilakukan dengan cara stack.
Dalam contoh ini, kita akan menggunakan text editor untuk mengedit program Java.
Juga membuka terminal window untuk meng-compile dan meng-execute program Java
anda.
A. Apa Itu Javascript
Javascript yaitu bahasa script yang biasa jalan di browser, orang-orang biasa bilang client side
programming. Client di sini yaitu browser, seperti: Internet Explorer, Firefox, Safari dan
sebagainya. Kode javascript biasanya disisipkan diantara kode-kode HTML.
Di mana saya bisa menulis kode javascript? Anda bisa menulis kode javascript di teks editor
seperti notepad dan sebagainya.
Apakah saya butuh compiler untuk menjalankan javascript? Tidak perlu, anda cukup
menjalankan javascript menggunakan browser. Semua browser mempunyai engine yang
menginterpretasikan kode javascript kita.
B. Memulai Javascript
Oke sekarang mari kita coba mulai menulis kode javascript kita. Di sini kita menggunakan
notepad sebagai teks editor.
Kode javascript ditulis diantara tag <script> dan </script>, bisa kita sisipkan di kode-kode HTML
kita.
Sekarang mari kita simpan kode tersebut dengan File Name: tes.html, jangan lupa Save as type:
All Files, seperti gambar di bawah.
7
Untuk mengetesnya, anda tinggal double klik file tes.html yang kita buat tadi, hasilnya akan
seperti berikut:
8
Javascript bisa juga ditulis terpisah, filenya diberi ekstension .js Contoh: namafile.js, nanti cara
menyisipkannya di file html yaitu seperti berikut:
<script type="text/javascript" src="namafile.js"></script>
C. Sintaks Javascript
Sintaks javascript mirip-mirip bahasa C atau java. Javascript bersifat case sensitive, artinya
huruf kecil dan huruf besar yaitu berbeda.
Setiap baris kode javascript dipisahkan baris baru atau bisa juga titik koma (;)
Komentar dalam javascript di awali dengan // atau ditulis diantara /* dan */
D. Variabel
Variabel di javascript bisa ditulis dengan diawalai huruf atau underscore ( _ ) atau tanda dollar
().
Contoh : jumlah_hits , _nama
Deklarasi variable
• Anda bisa mendeklarasi dengan menggunakan var, contoh: var x = 5, ini bersifat local
dan global (bisa di akses oleh semua fungsi)
• Atau langsung deklarasikan tanpa var, x = 5
Contoh:
<script>
var x = 5;
var nama = “Desrizal”;
document.write(nama);
</script>
E. Operator
Operator Aritmatika
Yaitu operator untuk operasi matematika
Operator Definisi Contoh
+ Penambahan 5 + 5 = 10
- Pengurangan 6 – 2 = 4
9
* Pengalian 4 * 4 = 16
/ Pembagian 8 / 2 = 4
% Modulus (sisa hasil
pembagian)
5 % 2 = 1
10 % 4 = 2
Contoh:
<script>
var x = 4;
var y = 2;
z = x + y;
alert(z);
</script>
Operator Assignment
Seperti kebanyakan bahasa pemograman lainnya, untuk memberikan nilai kepada suatu
variable menggunakan tanda sama dengan =
Berikut yaitu penyingkatan penulisan operator
Shorthand Operator Artinya
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
Contoh:
<script>
var x = 4;
var y = 2;
x -= y
alert(x);
</script>
Operator Pembanding
Berguna untuk membanding nilai suatu variable
Operator Definisi Contoh
== Sama dengan var1 == “Desrizal”
!= Tidak sama dengan x != y
10
> Lebih besar dari x > y
< Lebih kecil dari x < 6
>= Lebih besar sama dengan x>= y
<= Lebih kecil sama dengan x < 5
Contoh:
<html>
<head>
<script>
var x = 4;
var y = 2;
if(x > y){
alert("x lebih besar dari y");
}
</script>
</head>
<body>
</body>
</html>
Operator Logika
Operator Definisi Contoh
&& DAN x>=5 && x<10
|| ATAU x == 6 || x == 12
! BUKAN !expression
Contoh:
<script>
var x = 76;
if(x >= 80){
alert("Nilai = A");
}else if(x >= 70 && x < 80){
alert("Nilai = B");
}else if(x >= 60 && x < 70){
alert("Nilai = C");
}else{
alert("Nilai = D");
}
</script>
11
F. Statement
Kondisional
Kondisional berguna untuk mengecek suatu kondisi dan melakukan suatu kode jika kondisi
tersebut benar atau salah.
if
Sintaks :
if(kondisi){
kode yang dijalankan jika benar
}
Contoh :
<script>
var x = 10;
if(x == 10){
alert("Hai Apa kabar");
}
</script>
if - else
Sintaks :
if(kondisi){
kode yang dijalankan jika benar
}else{
kode yang dijalankan jika salah
}
Contoh :
<script>
var x = 5;
if(x == 10){
alert("Hai Apa kabar");
}else{
alert("X tidak sama dengan 10");
}
</script>
if - else if - else
Jika anda membutuhkan kondisi yang banyak
12
Sintaks :
if(kondisi 1){
kode yang dijalankan jika kondisi 1 benar
}else if(kondisi 2){
kode yang dijalankan jika kondisi 2 benar
}else if(kondisi 3){
kode yang dijalankan jika kondisi 3 benar
}else{
kode jika salah satu kondisi di atas tidak ada yang benar
}
Contoh :
<script>
var nilai = 80;
if(nilai >= 85){
alert("A");
}else if(nilai >= 70 && nilai < 85){
alert("B");
}else if(nilai >= 60 && nilai < 70){
alert("C");
}else{
alert("D");
}
</script>
switch
Sama seperti if - else if - else, berguna jika membutuhkan kondisi yang banyak
Sintaks :
switch(ekspresi){
case kondisi1 :
kode yang dijalankan jika kondisi1 benar;
break;
case kondisi2 :
kode yang dijalankan jika kondisi2 benar;
break;
case kondisi3 :
kode yang dijalankan jika kondisi3 benar;
break;
}
Contoh :
<script>
var buah = "mangga";
switch (buah) {
case "apple":
alert("buahnya yaitu apple");
break;
13
case "mangga":
alert("buahnya yaitu mangga");
break;
case "jambu":
alert("buahnya yaitu jambu");
break;
}
</script>
Pengulangan
for
Berguna untuk pengulangan yang sudah ditentukan terlebih dahulu awalnya berapa, dijalankan
sampai kondisi bagaimana.
Sintaks :
for(awal; kondisi; penambahan){
kode untuk dijalankan
}
Contoh :
<script>
for (i = 1; i <= 10; i++) {
document.write(i);
}
</script>
while
Berguna untuk menjalankan suatu kode terus menerus selama kondisi bernilai TRUE
Sintaks :
while(kondisi){
kode untuk dijalankan;
}
Contoh :
<script>
var i=1;
while(i<=5)
{
document.write(“Nomor : "+i +"<br />");
i++;
}
</script>
14
G. Fungsi
Apa itu fungsi? Fungsi yaitu kumpulan blok kode yang membentuk fungsi tersendiri. Kita bisa
membuat sendiri fungsi tersebut
Sintaks:
function nama_fungsi(parameter){
kode-kode javascript
}
Contoh 1:
<script>
function tes(){
document.write("Hello World!");
}
//untuk menjalankan fungsi, cukup tulis namafungsi
tes();
</script>
Contoh 2:
<script>
function kalikan(x,y){
z = x * y;
alert("Hasil kali "+x+" * "+y+" = "+z);
}
kalikan(5,3);
</script>
15
Penanganan Event
16
A. Apa itu Penanganan Event
Penanganan Event atau Event Handler yaitu kemampuan javascript untuk mendeteksi event
atau kejadian-kejadian yang terjadi di halaman web, kemudian menangani atau melakukan
suatu proses jika terdeteksi suatu event. Event di web bisa macam-macam, seperti klik, double
klik, menggerakkan mouse, bila pointer mouse berada di atas suatu objek HTML, dan
sebagainya.
Sintaknya:
nama_event=”kode javascript”
Contoh:
<html>
<body>
<a href=”http://www.google.com” onclick=”alert(‘hello’)”>google</a>
</body>
</html>
Pada contoh di atas ada sebuah link google, yang jika diklik (onclick) maka akan dieksekusi kode
javascript alert(‘hello’)
Ada macam-macam event yang bisa terjadi pada halaman web atau objek HTML, yaitu sebagai
berikut:
• onblur
• onchange
• onclick
• ondblclick
• onerror
• onfocus
• onkeydown
• onkeypress
• onkeyup
• onload
• onmousedown
• onmousemove
• onmouseout
• onmouseover
• onmouseup
• onreset
• onresize
• onselect
• onsubmit
• onunload
17
B. Contoh-contoh Penanganan Event
1. onclick
Pada contoh dibawah kita membuat tombol, yang kalau diklik akan muncul window alert
<script>
function inform(){
alert("Hai anda mengklik saya")
}
</script>
<form>
<input type="button" name="test" value="Click me" onclick="inform()">
</form>
Pada contoh berikut jika kita mengklik radio button akan mengubah warna latar halaman web
<html>
<body>
<form name="go">
<input type="radio" name="C1" onclick="document.bgColor='lightblue'">
<input type="radio" name="C1" onclick="document.bgColor='lightyellow'">
<input type="radio" name="C1" onclick="document.bgColor='lightgreen'">
</form>
</body>
</html>
2. onload
Event onload akan dieksekusi jika suatu objek telah diload, pada contoh berikut kita menaruh
event onload di tag <body>, artinya jika halaman web sudah diload semua, maka dieksekusi
kode javascript
<html>
<head><title>Body onload example</title>
</head>
<body onload="alert('Halaman ini telah selesai di loading')">
Welcome to my page
</body>
</html>
3. onmouseover dan onmouseout
Onmouseover berguna untuk mendeteksi apakah pointer mouse berada di atas suatu objek
HTML, onmouseout berguna untuk mendeteksi apakah pointer mouse keluar dari objek HTML,
contoh:
<html>
<body>
18
<table>
<tr onmouseover="this.bgColor='lightblue'"
onmouseout="this.bgColor='#efefef'" bgcolor="#efefef">
<td>Baris pertama</td>
</tr>
<tr>
<td>Baris kedua</td>
</tr>
</body>
</html>
4. onunload
Biasanya berguna untuk mendeteksi jika user meninggalkan atau menutup suatu halaman web
<html>
<body onunload="alert('Thank you. Please come back to this site and visit us
soon, ok?')">
<h1>Welcome</h1>
</body>
</html>
19
Objek String
20
A. Memformat teks dengan Javascript
Untuk membantu melakukan formatting terhadap teks secara programming, javascript
menyediakan beberapa metode formatting menggunakan javascript.
Properti Deskripsi
length Menghasilkan jumlah karakter dari suatu string atau teks
Metode Deskripsi
anchor(nama) Menghasilkan string dengan diapit tag <A name="nama">
big() Menghasilkan string dengan diapit tag <BIG>.
blink() Menghasilkan string dengan diapit tag <BLINK>
bold() Menghasilkan string dengan diapit tag <B>
fixed() Menghasilkan string dengan diapit tag <TT> surrounding it.
fontcolor(warna) Menghasilkan string dengan diapit tag <FONT color="warna">
fontsize(size) Menghasilkan string dengan diapit tag <FONT size="size">
italics() Menghasilkan string dengan diapit tag <I>
link(url) Menghasilkan string dengan diapit tag <A href="url">
small() Menghasilkan string dengan diapit tag <SMALL>
strike() Menghasilkan string dengan diapit tag <STRIKE>
sub() Menghasilkan string dengan diapit tag <SUB>
sup() Menghasilkan string dengan diapit tag <SUP>
toLowerCase() Mengubah string menjadi huruf kecil semua.
toUpperCase() Mengubah string menjadu huruf besar semua
Contoh 1:
<script>
var teks = "Desrizal"
panjang = teks.length;
alert(panjang);
</script>
21
Hasilnya:
Contoh 2:
<script>
var message="Welcome to our site!"
document.write(message)
</script>
Output:
Welcome to our site!
<script>
var message="Welcome to our site!"
document.write(message.toUpperCase())
</script>
Output:
WELCOME TO OUR SITE!
Contoh 3:
<script>
var message="Welcome to our site!"
document.write(message.toUpperCase().bold())
</script>
Output:
WELCOME TO OUR SITE!
Contoh 4:
<script>
var message="Welcome to our site!"
var format=message.toUpperCase()
var size=1
for (i=0;i<message.length;i++){
document.write(format.charAt(i).fontsize(size).bold())
if (size<7){
size++
}else{
size=1
22
}
}
</script>
Output:
WELCOME TO OUR SITE!
B. Penanganan Objek String
Setelah kita mempelajari metode string yang berkaitan dengan format teks. Sekarang kita lanjut
metode objek string lainnya ayng bertugas menangani dan memanipulasi objek string dan
contoh-contohnya.
Metode Deskripsi
charAt(x) Menghasilkan karakter pada posisi x dari suatu string.
charCodeAt(x) Menghasilkan nilai Unicode value dari karakter pada posisi x dari
suatu string.
concat(teks1, teks2,...) Menggabungkan satu atau lebih string-string (teks1, teks2, dan
sebagainya).
fromCharCode(c1, c2,...) Meghasilkan string yang dibuat menggunakan urutan dari nilai unicode
indexOf(substr, [start]) Mencari dan (jika ditemukan) menghasilkan nomor index number dari
karakter atau substring yang di dalam string. Jika tidak ditemukan,
hasilnya -1. "Start" yaitu argument opsional,posisi awal di string
untuk memulai pencarian , defaultnya yaitu 0
match(regexp) Mengeksekusi suatu pencarian untuk string berdasarkan pola regular
expression. Menghasikan suatu array informasi, jika tidak ditemukan
menghasilkan null.
replace( regexp, replacetext) Mencari dan menukar string yang dicari berdasarkan pola regular
expression.
search(regexp) Mengetes apakah pola regular expression cocok pada suatu string, jika
cocok akan menghasilkan index dari yang cocok, jika tidak ada yang
cocok menghasilkan -1.
slice(start, [end]) Menghasilkan substring dari suau string berdasarkan “start” dan “end”
argument.
split(delimiter, [limit]) Memotong-motong string berdasarkan pembatas yang ditentukan,
hasilnya dalam bentuk array.
substr(start, [length]) Menghasilkan karakter atau substring dari suatu string yang dimulai
dari “start” sampai panjang “length” yang ditentukan.
23
Contoh-contoh:
1. Validasi email, pada contoh berikut kita akan mengecek apakah email berikut valid atau
tidak. Cara mengeceknya yaitu apakah string yang diinput mengandung karakter @ atau titik
(.)
<form name="test" onSubmit="checkemail(this.test2.value);return false">
<input type="text" size=20 name="test2"> <input type="submit" value="Submit">
</form>
<script type="text/javascript">
function checkemail(email){
if (email.indexOf("@")!=-1 && email.indexOf(".")!=-1)
alert("bagus!")
else
alert("Bukan email")
}
</script>
2. Menghitung kata, Pada contoh berikut kita akan menghitung kata, caranya yaitu
mengambil isi suatu textarea, lalu memotong-motong isinya dengan metode split.
<form name="wordcount">
<textarea rows="12" name="wordcount2" cols="38"
wrap="virtual"></textarea><br>
<input type="button" value="Hitung kata" onClick="hitung()"> <input
type="text" name="wordcount3" size="20">
</form>
<script type="text/javascript">
function hitung(){
var formcontent=document.wordcount.wordcount2.value
isi=formcontent.split(" ")
document.wordcount.wordcount3.value=isi.length
}
</script>
24
C. Parse String ke Integer dan Float
parseInt, untuk mengubah string menjadi Integer
parseFloat, untuk mengubah string menjadi Float
<script type="text/javascript">
document.write(parseInt("10") + "<br />")
document.write(parseInt("10.00") + "<br />")
document.write(parseInt("10.33") + "<br />")
document.write(parseInt("34 45 66") + "<br />")
document.write(parseInt(" 60 ") + "<br />")
document.write(parseInt("40 years") + "<br />")
document.write(parseInt("He was 40") + "<br />")
document.write("<br />")
document.write(parseInt("10")+ "<br />")
document.write(parseInt("10",10)+ "<br />")
document.write(parseInt("010")+ "<br />")
document.write(parseInt("10",8)+ "<br />")
document.write(parseInt("0x10")+ "<br />")
document.write(parseInt("10",16)+ "<br />")
</script>
25
Objek Window
26
A. Membuka Window di Javascript
Untuk membuka window di javascript yaitu dengan metode open()
Sintaks:
window.open(url, nama_window, konfigurasi)
Contoh:
window.open(“http://www.google.com”,”windowku”,”width=300,height=200”);
Untuk konfigurasi yang bisa diset sebagai berikut:
Konfigurasi Deskripsi Nilai
width Lebar window Lebar window dalam pixel
height Tinggi window Tinggi window dalam pixel
toolbar Menampilkan toolbar browser 1 atau 0
menubar Menampilkan menubar browser 1 atau 0
scrollbars Apakah menampilkan scrollbars 1 atau 0
resizable Set apakah bisa window diubah-ubah
ukurannya
1 atau 0
Contoh:
<html>
<body>
<script>
function bukawindow(){
window.open("http://www.google.com","google","width=400,height=300,toolbar=1"
);
}
</script>
<input type="button" onclick="bukawindow()" value="buka">
</body>
</html>
B. Mereload, Menutup, Meloading Halaman Baru, Print
Untuk mereload window yaitu dengan cara:
window.location.reload()
Untuk menutup window yaitu dengan cara:
27
window.close()
Untuk meloading halaman baru yaitu :
window.location="urlkamu.com"
kode di atas akan sama jika anda mengklik suatu link:
<a href=”urlkamu.com”>urlkamu</a>
Untuk mengeprint halaman web
window.print()
C. Komunikasi Antar Window
Adakalanya ketika kita membuka window baru, kita bisa melakukan komunikasi data ke window
parent-nya, atau bisa mengakses dan memanipulasi objek di window parent.
Untuk mengakses window parent gunakan window.opener
Contoh:
Induk.html
<html>
<head>
<title>Test</title>
<script language="javascript">
function buka(){
var x = window.open('anak.html', 'newWindow', 'height=300,width=300');
}
</script>
</head>
<body>
<form name=formulir>
<INPUT type=button value="buka window" name=submit1 onClick="buka();">
<input type=text name=kotak id=kotak>
</form>
</body>
</html>
anak.html
<html>
<head>
<title>testing</title>
<script language=javascript>
function setInduk(){
28
window.opener.document.getElementById("kotak").value =
document.getElementById("inputan").value;
}
</script>
</head>
<body>
<form name=myForm>
<input type=text name="inputan" id="inputan">
<input type=button value="Click Me" onClick="setInduk();">
</form>
</body>
</html>
D. Alert, Confirm dan Prompt
alert digunakan untuk menampilkan window alert
Contoh:
<script>
alert(“Hellow World!!”);
</script>
Hasil:
cofirm, digunakan untuk memunculkan window konfirmasi atau semacam pertanyaan yang
jawabannya antara OK atau Cancel
Contoh:
<script type="text/javascript">
var x=window.confirm("Apakah anda baik-baik saja?")
if (x)
window.alert("Good!")
else
window.alert("Too bad")
</script>
29
prompt, digunakan untuk meminta inputan melalui window
Contoh:
<script type="text/javascript">
var y=window.prompt("Masukkan nama anda")
window.alert(y)
</script>
Hasilnya
30
Array
31
A. Pengenalan Array
Apa sih array? Array yaitu semacam variabel tunggal yang terindex secara teratur, jadi cukup
satu nama variabel tapi bisa punya banyak nilai. Karena terindex sacara teratur kita jadi
gampang mengolah dan menampilkan nilai-nilai dari variabel tersebut.
Contoh bentuk array:
Buah[1] = “Rambutan”
Buah[2] = “Durian”
Buah[3] = “Manggis”
Bagaimana cara buat array di javascript?
Untuk membuat array di javascript, kita perlu mendeklarasikan variabel array dengan cara new
Array()
Contoh:
<html>
<body>
<script type="text/javascript">
var mobil = new Array()
mobil[0] = "Saab"
mobil[1] = "Volvo"
mobil[2] = "BMW"
for (i=0;i<mobil.length;i++){
document.write(mobil[i] + "<br />")
}
</script>
</body>
</html>
Selain di atas kita juga bisa membuat array dengan cara menulis langsung di dalam argument
Array(). Index atau Key array dimulai dari nol (0)
Contoh:
<html>
<body>
<script type="text/javascript">
var buah = new Array("Mangga","Rambutan","Durian");
document.write(buah[1]);
</script>
</body>
</html>
32
Hasilnya yaitu Rambutan
B. Metode untuk Manipulasi Array
Javascript menyediakan metode-metode untuk melakukan manipulasi terhadap objek array
Properti Array
Properti Deskripsi
length Menghasilkan jumlah elemen dalam suatu array
Metode Array
concat()
fungsi:
Menggabungkan dua atau lebih array
Sintaks:
arrayObject.concat(arrayX,arrayX,......,arrayX)
Contoh:
<script type="text/javascript">
var arr = new Array(3)
arr[0] = "Jani"
arr[1] = "Tove"
arr[2] = "Hege"
var arr2 = new Array(3)
arr2[0] = "John"
arr2[1] = "Andy"
arr2[2] = "Wendy"
var arr3 = new Array(2)
arr3[0] = "Stale"
arr3[1] = "Borge"
document.write(arr.concat(arr2,arr3))
</script>
Hasilnya:
Jani,Tove,Hege,John,Andy,Wendy,Stale,Borge
33
join()
Fungsi:
Menuliskan elemen-elemen array ke dalam satu string dipisahkan oleh karakter yang kita set
Sintaks:
arrayObject.join(pemisah)
Contoh:
<script type="text/javascript">
var arr = new Array(3)
arr[0] = "Jani"
arr[1] = "Hege"
arr[2] = "Stale"
document.write(arr.join() + "<br />")
document.write(arr.join("."))
</script>
Hasilnya:
Jani,Hege,Stale
Jani.Hege.Stale
pop()
Fungsi:
Untuk mendelete elemen terakhir dari suatu array
Sintaks:
arrayObject.pop()
Contoh:
<script type="text/javascript">
var arr = new Array(3)
arr[0] = "Jani"
arr[1] = "Hege"
arr[2] = "Stale"
document.write(arr + "<br />")
document.write(arr.pop() + "<br />")
document.write(arr)
</script>
34
Hasilnya:
Jani,Hege,Stale
Stale
Jani,Hege
push()
Fungsi:
Menambah satu atau lebih elemen ke bagian akhir suatu array
Sintaks:
arrayObject.push(newelement1,newelement2,....,newelementX)
Contoh:
<script type="text/javascript">
var arr = new Array(3)
arr[0] = "Jani"
arr[1] = "Hege"
arr[2] = "Stale"
document.write(arr + "<br />")
document.write(arr.push("Kai Jim") + "<br />")
document.write(arr)
</script>
Hasilnya:
Jani,Hege,Stale
4
Jani,Hege,Stale,Kai Jim
reverse()
Fungsi:
Membalikkan urutan elemen dalam suatu array
Sintak:
arrayObject.reverse()
Contoh:
35
<script type="text/javascript">
var arr = new Array(3)
arr[0] = "Jani"
arr[1] = "Hege"
arr[2] = "Stale"
document.write(arr + "<br />")
document.write(arr.reverse())
</script>
Hasilnya:
Jani,Hege,Stale
Stale,Hege,Jani
shift()
Fungsi:
Untuk mendelete elemen pertama dari suatu array
Sintaks:
arrayObject.shift()
Contoh:
<script type="text/javascript">
var arr = new Array(3)
arr[0] = "Jani"
arr[1] = "Hege"
arr[2] = "Stale"
document.write(arr + "<br />")
document.write(arr.shift() + "<br />")
document.write(arr)
</script>
Hasilnya:
Jani,Hege,Stale
Jani
Hege,Stale
36
unshift()
Fungsi:
Untuk menambahkan satu atau lebih elemen pada awal array
Sintaks:
arrayObject.unshift(newelement1,newelement2,....,newelementX)
Contoh:
<script type="text/javascript">
var arr = new Array()
arr[0] = "Jani"
arr[1] = "Hege"
arr[2] = "Stale"
document.write(arr + "<br />")
arr.unshift("Kai Jim")
document.write(arr)
</script>
Hasilnya:
Jani,Hege,Stale
Kai Jim,Jani,Hege,Stale
sort()
Fungsi:
Untuk mengurutkan elemen array
Sintaks:
arrayObject.sort(sortby)
Contoh:
<script type="text/javascript">
var arr = new Array(6)
arr[0] = "Jani"
arr[1] = "Hege"
arr[2] = "Stale"
arr[3] = "Kai Jim"
arr[4] = "Borge"
37
arr[5] = "Tove"
document.write(arr + "<br />")
document.write(arr.sort())
</script>
Hasilnya:
Jani,Hege,Stale,Kai Jim,Borge,Tove
Borge,Hege,Jani,Kai Jim,Stale,Tove
38
Tanggal dan Waktu
39
A. Metode Tanggal dan Waktu
Untuk membuat objek tanggal dan waktu terlebih dahulu anda mendeklarasikan variabel/objek
tanggal dan waktu tersebut
var mydate= new Date()
Berikut yaitu beberapa metode tanggal dan waktu di javascript
Metode Deskripsi
getDate() Menghasilkan tanggal dalam suatu bulan
getDay() Meghasilkan nama hari
getHours() Menghasilkan jam (dimulai dari 0-23)!
getMinutes() Menghasilkan menit
getSeconds() Menghasilkan detik
getMonth() Menghasilkan bulan. (dimulai dari 0-11)!
getYear() Menghasilkan tahun
getTime() Menghasilkan waktu yang lengkap
Contoh:
<script type="text/javascript">
var hari_ini= new Date()
var tahun = hari_ini.getYear()
var bulan = hari_ini.getMonth()+1
var tanggal = hari_ini.getDate()
document.write("Tanggal hari ini: ")
document.write(tanggal+"/"+bulan+"/"+tahun)
</script>
Hasilnya:
Tanggal hari ini: 4/12/110
B. Javacsript Timer
Pada javascript terdapat fungsi timer, yaitu seTimeout(), yang berfungsi untuk mengatur timer
untuk mengeksekusi suatu fungsi atau kode tertentu
40
Sintaks:
setTimeout("expression", delaytime)
expression bisa berupa kode javascript atau suatu fungsi
delaytime, yaitu setiap berapa milidetik suatu expression dieksekusi
Contoh:
<html>
<body>
<input type="text" id="timer" size="12">
<input type="button" value="Start" onClick="count()">
<script type="text/javascript">
var c=0
document.getElementById("timer").value = ""
function count(){
document.getElementById("timer").value=c
c=c+1
setTimeout("count()",1000)
}
</script>
</body>
</html>
C. Membuat Jam Digital
<form name="Tick">
<input type="text" size="12" name="Clock">
</form>
<script type="text/javascript">
function show()
{
var Digital=new Date()
var hours=Digital.getHours()
var minutes=Digital.getMinutes()
var seconds=Digital.getSeconds()
var dn="AM"
if (hours>12){
dn="PM"
hours=hours-12
}
if (hours==0)
hours=12
if (minutes<=9)
minutes="0"+minutes
if (seconds<=9)
seconds="0"+seconds
document.Tick.Clock.value=
hours+":"+minutes+":"+seconds+" "+dn
setTimeout("show()",1000)
41
}
show()
</script>
42
Dynamic HTML
43
A. Mengakses dan Manipulasi Objek HTML
Untuk mengakses objek HTML, kita bisa menggunakan document.getElementById(”id_objek”)
atau document.getElementsByName(“nama_objek”)
Contoh:
<html>
<head>
<script type="text/javascript">
function getElement(){
var x=document.getElementById("myHeader")
alert("Ini yaitu elemen " + x.tagName)
}
</script>
</head>
<body>
<h1 id="myHeader" onclick="getElement()">
Klik saya untuk lihat nama tag saya</h1>
</body>
</html>
Berikut metode-metode untuk memanipulasi objek HTML
innerHTML
Fungsi: untuk mendapatkan isi teks atau html suatu objek atau tag HTML
Contoh:
<html>
<head>
<script type="text/javascript">
function lihatisi(){
isi = document.getElementById("kepala").innerHTML;
alert(isi);
}
function tukarisi(){
document.getElementById("kepala").innerHTML = "Tulisan Ini diganti";
}
</script>
</head>
<body>
<h1 id="kepala">Selamat Datang user!!</h1>
<input type="button" onclick="lihatisi()" value="Lihat isi H1">
<input type="button" onclick="tukarisi()" value="Tukar isi H1">
</body>
</html>
44
value
Fungsi: untuk mengambil atau memanipulasi nilai suatu input form
Contoh:
<html>
<head>
<script type="text/javascript">
function lihatisi(){
isi = document.getElementById("teks").value;
alert(isi);
}
function tukarisi(){
document.getElementById("teks").value = "Tulisan Ini diganti";
}
</script>
</head>
<body>
Ketik tulisan di form di bawah:<br>
<input type=text name="teks" id="teks">
<input type="button" onclick="lihatisi()" value="Lihat">
<input type="button" onclick="tukarisi()" value="Tukar">
</body>
</html>
B. Memanipulasi Style atau CSS Objek HTML
Untuk memanipulasi style atau CSS suatu objek, yaitu dengan cara:
objekHTML.style.namaStyle = “style yang diset”
objekHTML.namaStyle = “style yang diset”
atau
document.getElementById(“namaid”).style.namaStyle = “style yang diset”
document.getElementById(“namaid”).namaStyle = “style yang diset”
Mengubah warna latar TD
<html>
<head>
</head>
<body>
<table border=1 width=500 bgcolor="yellow">
<tr>
<td onmouseover="this.bgColor='red'"
onmouseout="this.bgColor='yellow'">Desrizal</td>
</tr>
<tr>
45
<td onmouseover="this.bgColor='red'" onmouseout="this.bgColor='yellow'">Nurmi
Yulita rahmi</td>
</tr>
</body>
</html>
Mengubah warna latar halaman web
<html>
<head>
<script>
function ubah(){
document.bgColor = "lightblue";
}
</script>
</head>
<body>
<input type="button" onclick="ubah()" value="ubah">
</body>
</html>
Mengubah posisi objek
<html>
<head>
<script>
function ubah(){
document.getElementById("kotak").style.top = 300;
document.getElementById("kotak").style.left = 300;
}
</script>
</head>
<body>
<input type="button" onclick="ubah()" value="ubah">
<div id="kotak" style="position:absolute;top:50;left:50;background-
color:yellow;width:50;height:50">
</div>
</body>
</html>
46
Penanganan Form
47
A. Penanganan CheckBox di javascript
Deteksi apakah checkbox sudah dicek
checkboxObject.checked=true|false
Contoh:
<html>
<head>
<script type="text/javascript">
function check(){
document.getElementById("myCheck").checked=true
}
function uncheck(){
document.getElementById("myCheck").checked=false
}
</script>
</head>
<body>
<form>
<input type="checkbox" id="myCheck" />
<input type="button" onclick="check()"
value="Check Checkbox" />
<input type="button" onclick="uncheck()"
value="Uncheck Checkbox" />
</form>
</body>
</html>
Mengambil Nilai checkbox
<html>
<head>
<script type="text/javascript">
function createOrder(){
coffee=document.forms[0].coffee
txt=""
for (i=0;i<coffee.length;++ i){
if (coffee[i].checked){
txt=txt + coffee[i].value + " "
}
}
document.getElementById("order").value="You ordered a coffee with " + txt
}
</script>
</head>
<body>
<p>How would you like your coffee?</p>
<form>
<input type="checkbox" name="coffee" value="cream">With cream<br />
<input type="checkbox" name="coffee" value="sugar">With sugar<br />
48
<br />
<input type="button" onclick="createOrder()" value="Send order">
<br /><br />
<input type="text" id="order" size="50">
</form>
</body>
</html>
B. Penanganan Input Radio di Javascript
<html>
<head>
<script type="text/javascript">
function setkelamin(jenis){
document.getElementById("kelaminmu").value = jenis;
}
</script>
</head>
<body>
jenis Kelamin:
<br>
<input type=radio value="Laki-laki" name="kelamin"
onclick="setkelamin(this.value)">Laki-laki<br>
<input type=radio value="Perempuan" name="kelamin"
onclick="setkelamin(this.value)">Perempuan<br>
<input type=text id="kelaminmu">
</body>
</html>
C. Penanganan Select Box di Javacsript
Mengambil nilai select box
<html>
<head>
<script type="text/javascript">
function favBrowser(){
var mylist=document.getElementById("myList")
document.getElementById("favorite").value=mylist.options[mylist.selectedIndex
].text
}
</script>
</head>
<body>
<form>
Select your favorite browser:
<select id="myList" onchange="favBrowser()">
<option>Internet Explorer</option>
<option>Netscape</option>
49
<option>Opera</option>
</select>
<p>Your favorite browser is: <input type="text" id="favorite" size="20"></p>
</form>
</body>
</html>
Mendelete option dari dropdown list
<html>
<head>
<script type="text/javascript">
function removeOption(){
var x=document.getElementById("mySelect")
x.remove(x.selectedIndex)
}
</script>
</head>
<body>
<form>
<select id="mySelect">
<option>Apple</option>
<option>Pear</option>
<option>Banana</option>
<option>Orange</option>
<option>Melon</option>
</select>
<input type="button" onclick="removeOption()" value="Remove option">
</form>
</body>
</html>
Desrizal