Dom JS
Dom JS
Pendahuluan
DOM adalah object model standar untuk HTML dan XML yang bersifat platform independent. Sebuah web browser tidak harus menggunakan DOM untuk menampilkan dokumen HTML. Namun DOM diperlukan oleh JavaScript yang akan mengubah tampilan sebuah website secara dinamis. Dengan kata lain, DOM adalah cara JavaScript melihat suatu halaman HTML.
STMIK Asia Malang -
Definisi DOM
DOM adalah antarmuka yang memungkinkan seseorang untuk mengakses dan memanipulasi konten dari web (dokumen) dengan pendekatan pemrograman. DOM menyediakan representasi terstruktur dan berorientasi objek dari setiap elemen dan konten dalam halaman dengan method-method untuk menerima dan mengatur property dari objek. DOM juga menyediakan method untuk menambah dan menghilangkan objek, sehingga akan lebih leluasa dalam pembuatan konten yang dinamis. DOM juga menyediakan interface untuk mengatur event, sehingga memungkinkan seseorang untuk menangkap dan merespon kepada user atau aksi browser. STMIK Asia Malang -
DOM Standart
W3C mulai mengembangkan DOM awal 1990-an. Pada bulan Oktober 1998, DOM 1 diluncurkan. Spesifikasi DOM W3C terbagi menjadi beberapa tingkat. Sebuah halaman yang mendukung suatu level harus menerapkan semua persyaratan level tersebut dan di bawahnya. Sebelum ada standar DOM dari W3C, masing-masing web browser memiliki DOM sendiri. Akibatnya, bila suatu website ingin ditampilkan secara cross-browser compatible, harus dirancang untuk setiap web browser yang akan didukung. DOM standar mempermudah pengembangan aplikasi web. STMIK Asia Malang -
Level DOM
DOM Level 0 (dom0) yang sesuai dengan model browser lama, seperti Internet Explorer dan Netscape versi 4. Saat ini W3C telah mengeluarkan tiga buah rekomendasi untuk DOM yaitu
Pengembangan DOM
Aktivitas pengembangan DOM di W3C sudah ditutup sejak tahun 2004 dengan lengkapnya pengembangan DOM Level 3 Recommendations. Tapi saat ini W3C Web Applications Working Group sudah mulai bergerak untuk melakukan revisi.
Parser DOM
Untuk memanipulasi dokumen dengan DOM, suatu parser akan membentuk representasi logik dari bagian isi dokumen dalam bentuk struktur pohon. DOM tidak menjelaskan bagaimana melakukan parsing terhadap dokumen, pembuatan dokumen baru ataupun melakukan serialisasi terhadap dokumen. Hal ini dikarenakan DOM adalah spesifikasi yang bebas bahasa. Untuk melakukan fungsi-fungsi tersebut dibutuhkan DOM parser yang diimplementasikan kedalam berbagai bahasa pemrograman tertentu seperti C, C++, atau Java. Beberapa contoh DOM parser adalah Apache Xerces, Crimson, Oracle XML Parser for Java atau MsXML.
Variasi DOM
Core DOM
Model
Standar untuk Dokumen terstruktur. Standar untuk Dokumen HTML. Standar untuk Doukumen XML.
HTML DOM
Model
XML DOM
Model
HTML DOM
model objek untuk HTML Standar programming interface untuk HTML Platform dan language-independent Standar W3C
HTML DOM mendefiniskan object dan property dari seluruh elemen HTML dan method (interface) untuk mengaksesnya. Dengan kata lain: HTML DOM adalah standar untuk menerima, mengubah, menambah, atau menghapus elemen HTML. STMIK Asia Malang -
Berdasarkan DOM, seluruh elemen HTML adalah Node yang akan disusun dengan menggunakan struktur tree.
Seluruh dokumen adalah suatu node dokumen Seluruh elemen HTML adalah suatu node elemen Teks dalam elemen HTML adalah node teks Setiap atribut HTML adalah node atribut. Komentar adalah node komentar
Document object Anchor object Area object Base object Body object Button object Event object Form object Frame object Frameset object IFrame object
Input Checkbox object Input File object Input Hidden object Input Password object Input Radio object Input Reset object Input Submit object Input Text object Link object Meta object Object object Option object Select object
Style object Table object TableCell object TableRow object Textarea object
Image object
Input Button object
x.innerHTML
nilai text dari x nama dari x nilai dari x parent node dari x node-node child dari x atribut dari x
x.nodeName
x.nodeValue
x.parentNode
x.childNodes
x.attributes
x.getElementById(id)
mendapatkan
x.getElementsByTagName(name)
mendapatkan
x.appendChild(node)
memasukkan
x.removeChild(node)
menghapus
Contoh DOM
<html><body> <h1>W3Schools Internal Note</h1> <p><b>To:</b> <span id=to></span><br /> <b>From:</b> <span id=from></span><br /> <b>Message:</b> <span id=message></span> <script type=text/javascript> if (window.XMLHttpRequest) { xhttp=new XMLHttpRequest() } else { xhttp=new ActiveXObject(Microsoft.XMLHTTP) } xhttp.open(GET,note.xml,false); xhttp.send(); xmlDoc=xhttp.responseXML; document.getElementById(to).innerHTML= xmlDoc.getElementsByTagName(to)[0].childNodes[0].nodeValue; document.getElementById(from).innerHTML= xmlDoc.getElementsByTagName(from)[0].childNodes[0].nodeValue; document.getElementById(message).innerHTML= xmlDoc.getElementsByTagName(body)[0].childNodes[0].nodeValue; </script></body>
</html>
document.getElementById('id_element')
dengan perintah ini akan mendapatkan objek dari element yang dimaksud secara langsung, dan dapat digunakan secara langsung juga. dengan perintah ini akan mendapatkan array dari semua objek pada halaman yang memiliki nama tag sesuai dengan parameter yang dimasukan. dengan perintah ini, bisa mendapatkan object dari parent element (element di atasnya) untuk element yang dimaksud. dengan perintah ini, bisa mendapatkan object dari child element (element anaknya) pertama untuk element yang dimaksud. dengan perintah ini, bisa mendapatkan object tetangga untuk element yang dimaksud. STMIK Asia Malang -
document.getElementsByTagName('NAMA_TAG')
element.parentNode
element.firstChild
element.nextSibling
Mengakses dengan JS
/* Mendapatkan semua element div, dengan hasil array element berikut: Array(<div id="fakultas">, <div id="teknik">, <div id="if">, <div id="mi">)
Mengakses dengan JS
Contoh
<html> <head> <title>Object Model</title> <script language="Javascript">
function start()
{ alert(document.getElementById("pText").innerHTML); document.getElementById("pText").innerHTML = "Terimakasih sudah mampir.";
}
</script></head> <body OnLoad="start()"> <p id="pText">Selamat Datang di website kami!</p>
</body></html>
innerHTML
<html><head> <SCRIPT language=Javascript> function xxx() { document.all.Layer1.style.backgroundColor=0xFF0000;
document.all.Layer1.innerHTML='<i>MERAH<i> Muda'; }
function yyy() { document.all.Layer1.style.backgroundColor=0xFFFF00; document.all.Layer1.innerHTML='<b><a href=google.com>KUNING</a></b>'; }
</SCRIPT></head>
<body bgcolor="#FFCC99"> <div id="Layer1" style="position:absolute; left:235px; top:152px; width:246px; height:136px; zindex:1; background-color: #FF3333; layer-background-color: #FF3333; border: 1px none #000000 onmouseover=xxx(); onmouseout=yyy(); > </div></body></html>
Kadang perlu untuk menyisipkan element baru di dalam element yang sudah ada tanpa memperbarui semua kontent HTML dari element yang akan diisi dengan menggunakan .innerHTML. Untuk melakukan hal tersebut, dapat menggunakan document.createElement dan memasukannya ke dalam element yang dimaksud dengan menggunakan appendChild atau insertBefore.
STMIK Asia Malang -
teknik_elektro.innerHTML = 'Elektro';
/* Memasukan element DIV elektro ke dalam element <div id="teknik"> yang sudah ada dalam variabel teknik
teknik.appendChild(teknik_elektro);
/* Sekarang ini isi tag <div id="teknik"> akan berubah menjadi: <div id="teknik"> <div id="if">Informatika</div> <div id="mi">Manajemen Informatika</div> <b>Teknik Komputer</b> <div>Elektro</div> </div>
teknik_industri.href='http://asia.ac.id/';
i.innerHTML = 'Teknik Industri';
/* Kita akan memasukannya ke element <div id="teknik"> sebelum element <div id="mi"> yang sudah ada dalam variabel mi
teknik.insertBefore(teknik_industri,mi);
</div>
Dynamic Styles
Elements style yang dapat dirubah secara dinamis Dynamic HTML Object Model juga memperbolehkan untuk merubah class attribute
Contoh 1
<html><head> <title>Object Model</title> <script language="javascript"> function start()
{
var inputColor = prompt("Masukkan warna untuk " +"background halaman ini", ""); document.body.style.backgroundColor = inputColor; } </script> </head> <body onload="start()"> <p>Selamat Datang di website kami!</p> </body>
</html>
Contoh 2
<html ><head> <script language="javascript"> function ubah() {
document.getElementById("layer1").style.color="blue";
document.getElementById("layer1").style.fontFamily="Arial"; document.getElementById("layer1").style.textDecoration="Underline"; }
</script></head>
<body> <div id="layer1">Halo!! </div> <input type="button" value="ubah" onclick=ubah()" />
</body>
</html>
Contoh 3
<html><head> <title>Object Model</title>
pText.className = inputClass;
} </script></head> <body onload = "start()"> <p id = "pText">Selamat Datang di website kami!</p> </body>
Dynamic Positioning
posisi elements CSS menjadi absolute atau relative Memindah elemen dengan memanipulasi properti top, left, right atau bottom dari CSS
Contoh
<html><head> <title>Dynamic Positioning</title> <script type = "text/javascript">
var speed = 5;
var count = 10; var direction = 1; var firstLine = "Text Membesar"; var fontStyle = [ "serif", "sans-serif", "monospace" ]; var fontStylecount = 0;
function start() {
window.setInterval( "run()", 100 ); } function run() { count += speed; if ( ( count % 200 ) == 0 ) { speed *= -1; direction = !direction; pText.style.color = ( speed < 0 ) ? "red" : "blue" ; firstLine = ( speed < 0 ) ? "Text Mengecil" : "Text Membesar"; pText.style.fontFamily =fontStyle[ ++fontStylecount % 3 ]; } pText.style.fontSize = count / 3; pText.style.left = count;
Image Gallery
<html> <head>
<script language="javascript">
var arr=new Array("a.jpg","b.jpg","c.jpg"); var n=0; function gambar() { n+=1; if(n==3) n=0; document.getElementById("layer1").innerHTML="<img src='"+arr[n]+"' width=100 height=100>"; }
</script></head>
<body> <div id="layer1"><img src="a.jpg" height="100" width="100"/> </div> <input type="button" value="ubah" onclick=gambar()" /> </body></html>
Ubah Image
<html><head> <SCRIPT>
function xxx(x)
{document.all('img'+x).src="nextdown.gif";} function yyy(x)
{eval('document.img'+x+'.src="nextup.gif"');}
</SCRIPT> </head> <body bgcolor="#FFCC66" > <IMG name="img0" src="nextup.gif" onMouseover="xxx(0)" onMouseout="yyy(0)"> <IMG name="img1" src="nextup.gif" onMouseover="xxx(1)" onMouseout="yyy(1)"> <IMG name="img2" src="nextup.gif" onMouseover="xxx(2)" onMouseout="yyy(2)"> </body> </html>
<div id="Layer2" style="position:absolute; left:103px; top:40px; width:172px; height:74px; z-index:1; background-color: #3333FF; layer-background-color: #3333FF; border: 1px none #000000"></div>
<div id="Layer3" style="position:absolute; left:345px; top:110px; width:218px; height:102px; z-index:3; background-color: #00CC66; layer-background-color: #00CC66; border: 1px none #000000"></div> <form name="form1" > <input type="button" name="Button" value="Pindah" onClick="xxx()">
Tugas Tambahan
Bagi mahasiswa yang merasa nilai UTSnya kurang, dapat mengerjakan tugas berikut ini. Dikumpulkan minggu depan
Tugas Tambahan
Senyum
Gunakan div untuk membuat bentuk diatas. Buat animasi kedip dan senyum dengan materi diatas.