Modul element.js merupakan komponen inti dalam ekosistem CrootJS yang dirancang untuk menjembatani interaksi antara logika JavaScript dan struktur DOM (Document Object Model). Fokus utama modul ini adalah memberikan abstraksi pada perintah-perintah manipulasi elemen yang seringkali repetitif dan kompleks dalam Vanilla JavaScript.
Dengan menggunakan modul ini, pengembang dapat meminimalisir penggunaan sintaks standar yang panjang seperti:
document.getElementById)Tujuannya adalah menciptakan alur kerja pengembangan web yang lebih elegan, mempercepat proses coding, dan memastikan struktur kode tetap bersih.
Modul element.js mencakup berbagai utilitas penting untuk mengelola antarmuka pengguna secara programatik:
Salah satu fitur unggulan adalah fungsi onClick.
Fungsi onClick digunakan untuk memberikan aksi ketika elemen HTML diklik. Fungsi ini menyederhanakan penggunaan addEventListener("click").
onClick(id, action)
id : ID elemen HTML targetaction : fungsi callback yang dijalankan saat klikdocument.getElementById(id)clickHTML:
<button id="btn-alert">Klik Saya!</button>
JavaScript:
onClick("btn-alert", () => {
alert("Tombol berhasil diklik menggunakan CrootJS");
console.log("Interaksi user terekam");
});
Modul element.js membantu pengelolaan elemen dan event secara efisien.
Fungsi onClick memungkinkan pengembang membangun interaksi dengan kode minimalis tanpa bergantung pada framework besar.
Kontributor: AL YASMIN ASSA’DIYAH - 714240014
Menambahkan event listener change pada elemen target. Fungsi callback akan dieksekusi saat pengguna selesai mengubah nilai dan elemen kehilangan fokus. Callback langsung menerima referensi elemen target. Sebaiknya dipanggil di dalam runAfterDOM().
Contoh Penggunaan:
import { onChange } from './element.js';
onChange('pilihLevel', (target) => {
console.log('Terpilih:', target.value);
});
Mengambil nilai berupa teks (string) dari elemen formulir seperti input, select, dan textarea. Mengembalikan string kosong jika nilai tidak ada. Catatan penting: nilai yang dikembalikan selalu berjenis teks, diperlukan konversi eksplisit dengan Number() untuk isian bertipe angka.
Contoh Penggunaan:
import { getValue } from './element.js';
const usia = Number(getValue('fieldUmur'));
const nama = getValue('fieldSiswa');
Secara langsung mengganti isi (innerHTML) dari elemen HTML target dengan konten baru. Biasa dimanfaatkan untuk proses perubahan tampilan dinamis tanpa me-muat ulang halaman. Penting: Pastikan bahwa teks atau string HTML masukan telah melalui tahap sanitasi guna mencegah bahaya Cross Site Scripting (XSS).
Contoh Penggunaan:
import { setInner } from './element.js';
setInner('boxStatus', 'Data berhasil diperbarui.');
const infoList = dataMap.map(x => `<li>${x.teks}</li>`).join('');
setInner('ulDaftar', infoList);
element.js merupakan salah satu modul dalam CrootJS yang berfungsi untuk membantu manipulasi DOM dan pengelolaan elemen HTML secara lebih sederhana dan modular.
Modul ini mengurangi penulisan kode DOM yang berulang seperti:
document.getElementById()document.querySelector()addEventListener()innerHTMLDengan adanya modul ini, proses pengembangan website menjadi lebih rapi, efisien, dan terstruktur.
Secara umum, element.js menyediakan fitur berikut:
innerHTML, innerText)Salah satu fungsi dalam kategori ini adalah renderHTML.
Fungsi renderHTML digunakan untuk mengambil file HTML dari sebuah URL, lalu menampilkannya ke dalam elemen tertentu berdasarkan ID.
Fungsi ini memungkinkan halaman web memuat konten secara dinamis tanpa perlu melakukan reload halaman.
renderHTML(id, urlHTML, callback = null, errorCallback = null)
id
ID elemen HTML yang menjadi tempat render konten.
urlHTML
URL atau path file HTML yang ingin dimuat.
callback (opsional)
Fungsi yang dijalankan setelah konten berhasil dimuat.
errorCallback (opsional)
Fungsi yang dipanggil dengan sebuah Error kalau elemen tidak ditemukan, server membalas status non-2xx (misal 404), jaringan gagal, atau request timeout (15 detik). Saat gagal, isi elemen tidak diubah dan callback tidak dipanggil.
document.getElementById().fetch().innerHTML.callback jika tersedia.<div id="content"></div>
renderHTML("content", "about.html", () => {
console.log("Konten berhasil dimuat");
});
Pada contoh di atas, file about.html akan dimuat dan ditampilkan di dalam elemen dengan ID content. Setelah proses selesai, callback akan dijalankan.
Modul element.js membantu pengelolaan elemen dan event secara lebih efisien.
Fungsi renderHTML memungkinkan pemuatan konten HTML secara dinamis menggunakan asynchronous JavaScript dan manipulasi DOM, sehingga mendukung pengembangan website yang modular, ringan, dan tidak bergantung pada framework kompleks.
Fungsi onInput digunakan untuk menambahkan event listener pada elemen HTML yang akan dijalankan setiap kali terjadi perubahan input dari pengguna.
Event ini biasanya digunakan pada elemen seperti:
<input><textarea><select>Fungsi ini mempermudah penanganan event input tanpa perlu menuliskan addEventListener secara manual.
onInput(id, callback)
id
ID elemen HTML yang ingin dipasangkan event input.
callback
Fungsi yang akan dijalankan setiap kali terjadi perubahan nilai pada elemen.
document.getElementById().input ke elemen tersebut.callback akan dijalankan.event.target.value.<input type="text" id="username" placeholder="Masukkan nama">
<p id="output"></p>
onInput("username", (event) => {
const value = event.target.value;
document.getElementById("output").innerText = value;
});
Pada contoh di atas, setiap kali pengguna mengetik pada input, teks akan langsung ditampilkan di elemen <p>.
Fungsi onInput mempermudah pengelolaan event input pada elemen HTML dengan cara yang lebih ringkas dan terstruktur.
Dengan fungsi ini, developer dapat membuat interaksi real-time tanpa harus menulis kode event listener secara berulang, sehingga kode menjadi lebih bersih, modular, dan mudah dipahami.
serializeForm(id)Mengambil semua field yang punya atribut name di dalam form (text, email, checkbox, radio yang terpilih, select) dan mengembalikannya sebagai satu object {nama: nilai} — jadi tidak perlu memanggil getValue() satu per satu sebelum kirim ke server. Field yang disabled dan <input type="file"> otomatis dilewati (file butuh postFile/postFileJSON dari api.js, bukan JSON biasa).
Contoh Penggunaan:
<form id="formDaftar">
<input type="text" name="nama">
<input type="email" name="email">
<input type="checkbox" name="setuju">
</form>
import { serializeForm } from "https://cdn.jsdelivr.net/gh/crootjs/lib@0.0.13/element.js";
import { postJSON } from "https://cdn.jsdelivr.net/gh/crootjs/lib@0.0.13/api.js";
const data = serializeForm("formDaftar");
// { nama: "...", email: "...", setuju: true/false }
postJSON("https://api.example.com/daftar", data, (res) => {
console.log(res);
});