Tugas Modul 4, 5, 7, 8

Modul 4 

Mini project dengan menggunakan javascript:

1. Konversi celscius ke derajat

<body>
    <script src="script.js"></script>
    <h2>Project 1</h2>
    <button onclick="suhu()">Convert</button>
    <p id="total"></p>
</body>

<script>
function suhu(){
    var cel = prompt("Masukan suhu farenheit")
    var far = (cel - 32)*5/9
    if (isNaN(far)){
        alert("tidak valid")
    }else{
        document.getElementById("total").innerHTML = "jadi " + cel +
" derajat farenheit adalah " + far.toFixed(2) + " derajat celcius"
    }  
}
</script>

Hasil dari kode tersebut adalah




2. Membuat sebuah list, dan sebuah button.
Jika button diklik, setiap item list yang
genap akan berubah menjadi biru dan
tebal.

    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
    </ul>
    <button onclick="ubah()">ubah warna</button>
ini kode javascriptnya
function ubah() {
    var listItem = document.getElementsByTagName("li")
    for (var i = 0; i < listItem.length; i++){
    if((i + 1)% 2 === 0)
    listItem[i].classList.add("warna")
    }
}


3. Membuat jam digital yang berubah warna bordernya di setiap detik

html:

    <div id="clock"></div>

css:
#clock {
            width: 120px;
          font-family: 'Arial', sans-serif;
          font-size: 2em;
          padding: 10px;
          border: 5px solid red; /* Warna default saat detik genap */
         
        }
   
        .blue-border {
          border-color: blue !important;
        }
JS:
function updateClock() {
    var now = new Date();
    var hours = now.getHours();
    var minutes = now.getMinutes();
    var seconds = now.getSeconds();

    var clockElement = document.getElementById('clock');
    clockElement.innerHTML = `${hours}:${minutes < 10 ? '0' : ''}${minutes}:${seconds
< 10 ? '0' : ''}${seconds}`;

    // Ganti warna border sesuai dengan detik (ganjil: biru, genap: merah)
    if (seconds % 2 === 0) {
      clockElement.classList.remove('blue-border');
    } else {
      clockElement.classList.add('blue-border');
    }
  }

  setInterval(updateClock, 1000); // Perbarui setiap detik
  updateClock(); // Pembaruan pertama kali saat halaman dimuat
OUTPU:



Modul 5

 Mini project 1

Membuat sebuah halaman HTML (lihat halaman berikut).  Apabila warna teks diganti, maka semua teks li berganti warna.

Berikut kode html nya
<body>
        <ul id="UbahWarna">
            <li>mangga</li>
            <li>jeruk</li>
            <li>pisang</li>
            <li>kentang</li>
            <li>bayem</li>
        </ul>
   
    <input onclick="ubahBiru()" type="radio" name="warna" id="biru">biru
    <input onclick="ubahHijau()" type="radio" name="warna" id="hijau">hijau
    <input onclick="ubahKuning()" type="radio" name="warna" id="kuning">kuning
</body>

Berikut kode js nya
function ubahBiru() {
    var biru = document.getElementById("UbahWarna")
    biru.style.color="blue"
}
function ubahHijau() {
    var biru = document.getElementById("UbahWarna")
    biru.style.color="green"
}
function ubahKuning() {
    var biru = document.getElementById("UbahWarna")
    biru.style.color="yellow"
}

Berikut adalah outputnya






Mini project 2

Membuat sebuah list, dan sebuah button.
Jika button diklik, setiap item list yang
genap akan berubah menjadi biru dan
tebal.

    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
        <li>6</li>
    </ul>
    <button onclick="ubah()">ubah warna</button>
ini kode javascriptnya
function ubah() {
    var listItem = document.getElementsByTagName("li")
    for (var i = 0; i < listItem.length; i++){
    if((i + 1)% 2 === 0)
    listItem[i].classList.add("warna")
    }
}

Mini project 3

Kode html-nya:
<ul id="myList">
       <li>Item 1</li>
       <li>Item 2</li>
       <li>Item 3</li>
       <li>Item 4</li>
       <li>Item 5</li>
       <li>Item 6</li>
       <li>Item 7</li>
       <li>Item 8</li>
     </ul>
   
    <label for="colorSelector">warna angka genap</label>
        <select id="colorSelector" onchange="ubahWarna()">
            <option value="blue">Blue</option>
            <option value="green">Green</option>
            <option value="yellow">Yellow</option>
        </select>

<br>

    <label for="colorList">Pilih Warna untuk List Ganjil</label>
        <select id="colorList" onchange="changeColor()">
            <option value="red">Merah</option>
            <option value="purple">Ungu</option>
            <option value="grey">Abu-abu</option>
        </select>


Berikut adalah kode pada js:
function ubahWarna() {
    var selectElement = document.getElementById("colorSelector");
    var selectedColor = selectElement.value;
   
    var listItems = document.querySelectorAll("#myList li");

    var i = 1;
    while (i < listItems.length) {
        listItems[i].style.color = selectedColor;
        listItems[i].style.fontWeight = "bold";

        i += 2
    }
}

function changeColor() {
    var selectElement = document.getElementById("colorList");
    var selectedColor = selectElement.value;
   
    var listItems = document.querySelectorAll("#myList li");

    var j = 0;
    do {
        listItems[j].style.color = selectedColor;
        listItems[j].style.fontWeight = "bold";
       
        j += 2;
    }

    while (j < listItems.length);
}

Kode di atas menciptakan sebuah halaman web dengan sebuah daftar tak terurut (unordered list) dan dua dropdown. Setiap dropdown memungkinkan pengguna memilih warna untuk angka genap dan ganjil dalam daftar, dan terdapat dua fungsi JavaScript (ubahWarna() dan changeColor()) yang disertakan untuk mengubah warna dan memberikan efek teks pada item-item tertentu dalam daftar berdasarkan pilihan pengguna di dropdown.

output dari kode tersebut

Mini project 4

Berikut adalah kode html nya:

    <label for="text">Input Teks:</label>
    <input type="text" id="text" placeholder="Masukkan teks">

    <label for="quantity">Input Jumlah:</label>
    <input type="number" id="quantity" placeholder="Masukkan jumlah" min="1" value="1">

    <button onclick="generateListItem()">Generate Item</button>
<br>
    <ul id="myList2"></ul>

    <input onclick="ChangeBlue()" type="radio" name="color" id="blue">biru
    <input onclick="ChangeRed()" type="radio" name="color" id="red">merah
    <input onclick="ChangeGreen()" type="radio" name="color" id="green">hijau

    <h3>Warna Hover</h3>
  <input onmouseover="changeHoverColor('teal')" type="radio" name="hoverColor"
id="hoverBlue">Teal
  <input onmouseover="changeHoverColor('gold')" type="radio" name="hoverColor"
id="hoverRed">Gold
  <input onmouseover="changeHoverColor('lightgreen')" type="radio" name="hoverColor"
id="hoverGreen">Lightgreen

Berikut adalah kode java scriptnya

function generateListItem() {
    var textInput = document.getElementById("text").value;
    var quantityInput = document.getElementById("quantity").value;

    if (textInput && quantityInput > 0) {
      var myList = document.getElementById("myList2");

      // Menghapus semua elemen anak sebelum menambahkan yang baru
      while (myList.firstChild) {
        myList.removeChild(myList.firstChild);
      }

      // Membuat elemen-elemen list sesuai dengan input
      for (var i = 1; i <= quantityInput; i++) {
        var listItem = document.createElement("li");
        listItem.textContent = textInput + " " + i;
        myList.appendChild(listItem);

        }
      }
    }
  }

function ChangeBlue() {
  var blue = document.getElementById("myList2")
  blue.style.color=('blue')
}

function ChangeRed() {
  var blue = document.getElementById("myList2")
  blue.style.color=('red')
}

function ChangeGreen() {
  var blue = document.getElementById("myList2")
  blue.style.color=('green')
}

function changeHoverColor(color) {
  var listItems = document.querySelectorAll("#myList2 li");

  listItems.forEach(function (item) {
    item.addEventListener("mouseover", function () {
      item.style.color = color;
    });

    item.addEventListener("mouseout", function () {
      item.style.color = ""; // Reset to default color on mouseout
    });
  });
}


Berikut adalah output nya;


Mini project 5

Kode html:
    <form id="dataForm">
        <label for="itemName">Nama Buah:</label>
        <input type="text" id="itemName" name="itemName" required>
   
        <label for="itemWeight">Berat:</label>
        <input type="number" id="itemWeight" name="itemWeight" min="0" required>
   
        <button type="button" onclick="addData()">Tambah Data</button>
    </form>

    <!-- Table untuk menampilkan data -->
<table id="dataTable">
    <thead>
        <tr>
            <th>No</th>
            <th>Nama Buah</th>
            <th>Berat (kg)</th>
            <th>Action</th>
        </tr>
    </thead>
    <tbody>
        <!-- Data akan ditambahkan di sini -->
    </tbody>
</table>

Kode pada JS:
function addData() {
  // Mendapatkan nilai input dari form
            var itemName = document.getElementById('itemName').value;
            var itemWeight = parseInt(document.getElementById('itemWeight').value);
              // Mendapatkan elemen tbody dari tabel
              var tableBody = document.querySelector('#dataTable tbody');
 
              // Membuat baris baru
              var newRow = document.createElement('tr');
 
              // Menambahkan nomor urut (No) pada baris
              var rowCount = tableBody.rows.length + 1;
              newRow.innerHTML = '<td>' + rowCount + '</td>';
             
              // Menambahkan nama barang dan berat pada baris
              newRow.innerHTML += '<td>' + itemName + '</td>';
 
              // Menandai baris dengan background merah jika berat lebih dari 5kg
              if (itemWeight > 5) {
                  newRow.innerHTML += '<td>' + itemWeight + '</td>';
                  newRow.classList.add('red-bg');
              } else {
                  newRow.innerHTML += '<td>' + itemWeight + '</td>';
              }
 
              // Menambahkan tombol hapus pada baris
              newRow.innerHTML += '<td><button type="button" onclick="deleteRow(this)">Hapus</button></td>';
 
              // Menambahkan baris ke dalam tbody
              tableBody.appendChild(newRow);
 
              // Mengosongkan nilai input setelah ditambahkan
              document.getElementById('itemName').value = '';
              document.getElementById('itemWeight').value = '';
          }
 
          function deleteRow(button) {
              // Mendapatkan baris yang berisi tombol yang diklik
              var row = button.parentNode.parentNode;
 
              // Menghapus baris dari tabel
              row.parentNode.removeChild(row);
}

output:



Modul 7

Mini project 1

Html:
<h1>Trayek Generator</h1>
    <textarea id="trayekInput" rows="4" cols="50" placeholder="Masukkan trayek (pisahkan dengan koma, dan antar kota dengan spasi)"></textarea>
    <br>
    <button onclick="generateTable()">Generate</button>

    <div id="result"></div>

css:
<style>
        table {
            border-collapse: collapse;
            width: 100%;
            margin-top: 20px;
            width: 190px;
        }

        table, th, td {
            border: 1px solid black;
            border-collapse: collapse;
        }

        th, td {
            padding: 8px;
            text-align: left;
        }
       


    </style>

JavaScript:
<script>
        function generateTable() {
            // Ambil nilai dari textarea
            var trayekData = document.getElementById('trayekInput').value;

            // Pisahkan trayek berdasarkan koma
            var trayekArray = trayekData.split(',');

            // Buat tabel
            var table = '<table><tr><th>Kota</th></tr>';

            // Loop untuk setiap trayek
            trayekArray.forEach(function(trayek) {
                var kotaArray = trayek.trim().split(' ');
                var kotaWithDash = kotaArray.join(' - ');
                table += '<tr><td>' + kotaWithDash + '</td></tr>';
            });

            table += '</table>';

            // Tampilkan tabel hasil
            document.getElementById('result').innerHTML = table;
        }
    </script>

Output

Mini project 2

HTML:

<form id="dataForm">
        <label for="itemName">Nama Buah:</label>
        <input type="text" id="itemName" name="itemName" required>
   
        <label for="itemWeight">Berat:</label>
        <input type="number" id="itemWeight" name="itemWeight" min="0" required>

        <label for="itemImage">URL Gambar:</label>
        <input type="text" id="itemImage" name="itemImage">
   
        <button type="button" onclick="addData()">Tambah Data</button>
    </form>
   
    <!-- Table untuk memperlihatkan  data -->
    <table id="dataTable">
        <thead>
            <tr>
                <th>No</th>
                <th>Nama Buah</th>
                <th>Berat (kg)</th>
                <th>Gambar</th>
                <th>Action</th>
            </tr>
        </thead>
        <tbody>
            <!-- Data akan ditambahkan di sini -->
        </tbody>
    </table>

CSS:

<style>
        table {
            border-collapse: separate;
            width: 80%;
            margin: 20px auto;
        }

        th, td {
            border: 1px solid black;
            padding: 8px;
            text-align: left;
        }

        tr.red-bg td:nth-child(3) {
            background-color: red;
        }

        #dataForm {
            text-align: center;
            margin-top: 20px;
        }

        img {
            max-width: 50px;
            max-height: 50px;
        }

        .edit-input {
            width: 100%;
        }
    </style>

JS:

<script>
        var editMode = false;
        var editedRow;

        function addData() {
            if (editMode) {
                // Update existing row in edit mode
                updateRow();
            } else {
                // Add new row in add mode
                var itemName = document.getElementById('itemName').value;
                var itemWeight = parseInt(document.getElementById('itemWeight').value);
                var itemImage = document.getElementById('itemImage').value;

                var tableBody = document.querySelector('#dataTable tbody');
                var newRow = document.createElement('tr');
                var rowCount = tableBody.rows.length + 1;

                newRow.innerHTML = '<td>' + rowCount + '</td>' +
                                   '<td><span contenteditable="true">' + itemName + '</span></td>' +
                                   '<td><span contenteditable="true">' + itemWeight + '</span></td>' +
                                   '<td><img src="' + itemImage + '" alt="Gambar Buah" style="max-width: 50px; max-height: 50px;"></td>' +
                                   '<td><button type="button" onclick="saveRow(this)">Save</button>' +
                                   ' <button type="button" onclick="deleteRow(this)">Hapus</button>' +
                                   ' <button type="button" onclick="editRow(this)">Edit</button></td>';

                // Apply red background if weight is more than 5 kg
                if (itemWeight > 5) {
                    newRow.classList.add('red-bg');
                }

                tableBody.appendChild(newRow);
                clearForm();
            }
        }

        function editRow(button) {
            editMode = true;
            editedRow = button.parentNode.parentNode;

            // Change button text to "Update"
            document.querySelector('#dataForm button').textContent = 'Update';

            // Replace content with input fields for inline editing
            for (var i = 1; i < editedRow.cells.length - 1; i++) {
                var cellContent = editedRow.cells[i].textContent;
                if (i !== 3) {
                    editedRow.cells[i].innerHTML = '<input class="edit-input" type="text" value="' + cellContent + '">';
                } else {
                    // Handle image separately
                    editedRow.cells[i].innerHTML = '<input class="edit-input" type="text" value="' + cellContent + '">' +
                                                    '<img src="' + cellContent + '" alt="Gambar Buah" style="max-width: 50px; max-height: 50px;">';
                }
            }
        }

        function updateRow() {
            // Reset edit mode, change button text, and clear form
            editMode = false;
            document.querySelector('#dataForm button').textContent = 'Tambah Data';

            // Update row with edited values
            var inputs = editedRow.querySelectorAll('.edit-input');
            for (var i = 0; i < inputs.length; i++) {
                if (i !== 2) {
                    editedRow.cells[i + 1].innerHTML = inputs[i].value;
                } else {
                    // Handle image separately
                    editedRow.cells[i + 1].innerHTML = '<img src="' + inputs[i].value + '" alt="Gambar Buah" style="max-width: 50px; max-height: 50px;">';
                }
            }

            clearForm();
        }

        function deleteRow(button) {
            var row = button.parentNode.parentNode;
            row.parentNode.removeChild(row);
            clearForm();
        }

        function saveRow(button) {
            if (editMode) {
                updateRow();
            } else {
                addData();
            }
        }

        function clearForm() {
            // Clear form values
            document.getElementById('itemName').value = '';
            document.getElementById('itemWeight').value = '';
            document.getElementById('itemImage').value = '';
        }
    </script>

OUTPUT:


Mini project 3

html:
<h1>Quiz 2 Exam Generator</h1>
    <input type="text" id="questionInput" placeholder="Masukkan pertanyaan">
    <input type="text" id="option1Input" placeholder="Opsi 1">
    <input type="text" id="option2Input" placeholder="Opsi 2">
    <input type="number" id="timeInput" placeholder="Masukkan waktu (detik)">
    <button id="addQuestionBtn" onclick="addQuestion()">Tambah Pertanyaan</button>
    <button id="finishTestBtn" onclick="finishTest()">Selesaikan Tes</button>
    <div id="tableContainer"></div>

css:
<style>
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
        }

        h1 {
            text-align: center;
        }

        input[type="text"], input[type="number"] {
            width: 100%;
            margin-bottom: 10px;
        }

        button {
            padding: 10px 20px;
            background-color: #007bff;
            color: #fff;
            border: none;
            cursor: pointer;
        }

        table {
            border-collapse: collapse;
            width: 100%;
        }

        th, td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: left;
        }

        th {
            background-color: #007bff;
            color: white;
        }

        .grayed-out {
            color: #aaa;
        }
</style>
JS:
    <script>
        var questions = [];

        function addQuestion() {
            var questionInput = document.getElementById('questionInput').value.trim();
            var option1Input = document.getElementById('option1Input').value.trim();
            var option2Input = document.getElementById('option2Input').value.trim();
            var timeInput = parseInt(document.getElementById('timeInput').value.trim());

            if (questionInput !== '' && option1Input !== '' && option2Input !== '' && !isNaN(timeInput) && timeInput > 0) {
                var question = {
                    question: questionInput,
                    options: [option1Input, option2Input],
                    time: timeInput,
                    timerId: null
                };

                questions.push(question);
                renderTable();
                clearInputs();
            } else {
                alert('Silakan lengkapi semua input dengan benar.');
            }
        }

        function renderTable() {
            var tableHtml = '<table>';
            tableHtml += '<tr><th>No.</th><th>Pertanyaan</th><th>Opsi</th><th>Waktu (detik)</th></tr>';

            for (var i = 0; i < questions.length; i++) {
                tableHtml += '<tr>';
                tableHtml += '<td>' + (i + 1) + '</td>';
                tableHtml += '<td>' + questions[i].question + '</td>';
                tableHtml += '<td>';
               
                // Menambahkan input radio untuk setiap opsi
                for (var j = 0; j < questions[i].options.length; j++) {
                    tableHtml += '<input type="radio" name="option' + i + '" value="' + questions[i].options[j] + '"> ' + questions[i].options[j] + '<br>';
                }

                tableHtml += '</td>';
                tableHtml += '<td id="timeCell' + i + '">' + questions[i].time + '</td>';
                tableHtml += '</tr>';
            }

            tableHtml += '</table>';
            document.getElementById('tableContainer').innerHTML = tableHtml;

            startTimerForNewQuestion();
        }

        function startTimerForNewQuestion() {
            var lastIndex = questions.length - 1;
            if (lastIndex > 0 && questions[lastIndex - 1].timerId !== null) {
                clearInterval(questions[lastIndex - 1].timerId); // Memberhentikan timer pertanyaan sebelumnya
            }
            startTimer(lastIndex);
        }

        function startTimer(index) {
            var timeCell = document.getElementById('timeCell' + index);
            var time = questions[index].time;

            questions[index].timerId = setInterval(function() {
                time--;

                if (time <= 0) {
                    clearInterval(questions[index].timerId);
                    timeCell.textContent = 'Waktu Habis';
                    timeCell.classList.add('grayed-out');

                    var radios = document.getElementsByName('option' + index);
                    for (var j = 0; j < radios.length; j++) {
                        radios[j].disabled = true;
                    }
                } else {
                    timeCell.textContent = time;
                }
            }, 1000);
        }

        function clearInputs() {
            document.getElementById('questionInput').value = '';
            document.getElementById('option1Input').value = '';
            document.getElementById('option2Input').value = '';
            document.getElementById('timeInput').value = '';
        }

        function finishTest() {
            clearIntervalAllTimers();
            disableAllInputs();
        }

        function clearIntervalAllTimers() {
            for (var i = 0; i < questions.length; i++) {
                clearInterval(questions[i].timerId);
            }
        }

        function disableAllInputs() {
            document.getElementById('questionInput').disabled = true;
            document.getElementById('option1Input').disabled = true;
            document.getElementById('option2Input').disabled = true;
            document.getElementById('timeInput').disabled = true;

            var allRadios = document.querySelectorAll('input[type="radio"]');
            allRadios.forEach(function(radio) {
                radio.disabled = true;
            });
        }
    </script>

Output:

Modul 8

Mini project 1

html:
<h2>Generator Bilangan Prima</h2>
    <label for="angkaPertama">Angka Pertama:</label>
    <input type="number" id="angkaPertama" placeholder="Masukkan angka pertama">

    <label for="angkaTerakhir">Angka Terakhir:</label>
    <input type="number" id="angkaTerakhir" placeholder="Masukkan angka terakhir">

    <button onclick="generatePrimes()">Generate Bilangan Prima</button>

    <div id="result"></div>
css:
    <style>
        table {
            border-collapse: collapse;
            width: 100%;
            margin-top: 20px;
        }
        table, th, td {
            border: 1px solid black;
        }
        th, td {
            padding: 10px;
            text-align: center;
        }
    </style>
JS:
    <script>
        function isPrime(num) {
            if (num < 2) return false;
            for (let i = 2; i <= Math.sqrt(num); i++) {
                if (num % i === 0) return false;
            }
            return true;
        }

        function generatePrimes() {
            const angkaPertama = parseInt(document.getElementById("angkaPertama").value);
            const angkaTerakhir = parseInt(document.getElementById("angkaTerakhir").value);
            const primes = [];

            for (let i = angkaPertama + 1; i < angkaTerakhir; i++) {
                if (isPrime(i)) {
                    primes.push(i);
                }
            }

            displayPrimes(primes);
        }

        function displayPrimes(primes) {
            const resultDiv = document.getElementById("result");
            resultDiv.innerHTML = "";

            if (primes.length === 0) {
                resultDiv.innerHTML = "Tidak ada bilangan prima di antara angka tersebut.";
                return;
            }

            const table = document.createElement("table");
            const headerRow = table.insertRow(0);
            const headerCell = headerRow.insertCell(0);
            headerCell.innerHTML = "Bilangan Prima";

            primes.forEach((prime, index) => {
                const row = table.insertRow(index + 1);
                const cell = row.insertCell(0);
                cell.innerHTML = prime;
            });

            resultDiv.appendChild(table);
        }
    </script>
Output:

Mini project 2

HTML:
<h2>Sorting Page</h2>

<label for="inputNumbers">Input Angka (pisahkan dengan koma): </label>
<input type="text" id="inputNumbers">
<br>

<label>Pilih Urutan Sorting: </label>
<input type="radio" name="sortOrder" value="asc" checked> Ascending
<input type="radio" name="sortOrder" value="desc"> Descending
<br>

<button onclick="sortNumbers()">Sorting</button>

<table id="resultTable">
  <!-- Hasil sorting akan ditampilkan di sini -->
</table>

CSS:
 <style>
    body {
      font-family: Arial, sans-serif;
      text-align: center;
      margin: 20px;
    }
    table {
      margin-top: 20px;
      border-collapse: collapse;
      width: 50%;
      margin-left: auto;
      margin-right: auto;
    }
    table, th, td {
      border: 1px solid black;
    }
    th, td {
      padding: 10px;
      text-align: center;
    }
    button {
      margin-top: 10px;
      padding: 10px;
    }
  </style>

JS:
<script>
  function sortNumbers() {
    // Mendapatkan nilai input dan urutan sorting
    const inputNumbers = document.getElementById('inputNumbers').value;
    const sortOrder = document.querySelector('input[name="sortOrder"]:checked').value;

    // Memisahkan angka yang diinput berdasarkan koma
    const numbersArray = inputNumbers.split(',').map(Number);

    // Melakukan sorting sesuai dengan urutan yang dipilih
    if (sortOrder === 'asc') {
      numbersArray.sort((a, b) => a - b);
    } else if (sortOrder === 'desc') {
      numbersArray.sort((a, b) => b - a);
    }

    // Menampilkan hasil sorting dalam bentuk tabel
    displayResult(numbersArray);
  }

  function displayResult(sortedNumbers) {
    const resultTable = document.getElementById('resultTable');
    resultTable.innerHTML = '';

    // Membuat header tabel
    const headerRow = resultTable.insertRow(0);
    const headerCell = headerRow.insertCell(0);
    headerCell.innerHTML = '<b>Sorted Numbers</b>';

    // Memasukkan angka ke dalam tabel
    for (let i = 0; i < sortedNumbers.length; i++) {
      const row = resultTable.insertRow(i + 1);
      const cell = row.insertCell(0);
      cell.innerHTML = sortedNumbers[i];
    }
  }
</script>

Output:

Mini project 3

HTML:
<h2>Statistics Page</h2>

<label for="inputNumbers">Input Angka (pisahkan dengan koma): </label>
<input type="text" id="inputNumbers">
<br>

<button onclick="calculateStatistics()">Find</button>

<table id="resultTable">
  <!-- Hasil statistik akan ditampilkan di sini -->
</table>


CSS:
  <style>
    body {
      font-family: Arial, sans-serif;
      text-align: center;
      margin: 20px;
    }
    table {
      margin-top: 20px;
      border-collapse: collapse;
      width: 50%;
      margin-left: auto;
      margin-right: auto;
    }
    table, th, td {
      border: 1px solid black;
    }
    th, td {
      padding: 10px;
      text-align: center;
    }
    button {
      margin-top: 10px;
      padding: 10px;
    }
  </style>

JS:
<script>
  function calculateStatistics() {
    // Mendapatkan nilai input
    const inputNumbers = document.getElementById('inputNumbers').value;

    // Memisahkan angka yang diinput berdasarkan koma
    const numbersArray = inputNumbers.split(',').map(Number);

    // Menghitung nilai Min, Max, dan Average
    const min = Math.min(...numbersArray);
    const max = Math.max(...numbersArray);
    const average = numbersArray.length > 0 ? numbersArray.reduce((a, b) => a + b) / numbersArray.length : 0;

    // Menampilkan hasil statistik dalam bentuk tabel
    displayStatistics(min, max, average);
  }

  function displayStatistics(min, max, average) {
    const resultTable = document.getElementById('resultTable');
    resultTable.innerHTML = '';

    // Membuat header tabel
    const headerRow = resultTable.insertRow(0);
    const headerCellMin = headerRow.insertCell(0);
    const headerCellMax = headerRow.insertCell(1);
    const headerCellAverage = headerRow.insertCell(2);

    headerCellMin.innerHTML = '<b>Min</b>';
    headerCellMax.innerHTML = '<b>Max</b>';
    headerCellAverage.innerHTML = '<b>Average</b>';

    // Menambahkan nilai Min, Max, dan Average ke dalam tabel
    const row = resultTable.insertRow(1);
    const cellMin = row.insertCell(0);
    const cellMax = row.insertCell(1);
    const cellAverage = row.insertCell(2);

    cellMin.innerHTML = min;
    cellMax.innerHTML = max;
    cellAverage.innerHTML = average.toFixed(2); // Menampilkan average dengan 2 desimal
  }
</script>

Output:

Mini project 4

HTML:
<form id="dataForm">
    <label for="itemName">Nama Buah:</label>
    <input type="text" id="itemName" name="itemName" required>

    <label for="itemWeight">Berat:</label>
    <input type="number" id="itemWeight" name="itemWeight" min="0" required>

    <label for="itemImage">URL Gambar:</label>
    <input type="text" id="itemImage" name="itemImage">

    <button type="button" onclick="manageData()">Proses Data</button>
</form>

<!-- Table untuk menampilkan data -->
<table id="dataTable">
    <thead>
        <tr>
            <th>No</th>
            <th>Nama Buah</th>
            <th>Berat (kg)</th>
            <th>Gambar</th>
            <th>Action</th>
        </tr>
    </thead>
    <tbody>
        <!-- Data akan ditambahkan di sini -->
    </tbody>
</table>

CSS:
  <style>
    /* Styling CSS sama seperti sebelumnya */

    table {
        border-collapse: separate;
        width: 80%;
        margin: 20px auto;
    }

    th, td {
        border: 1px solid black;
        padding: 8px;
        text-align: left;
    }

    tr.red-bg td:nth-child(3) {
        background-color: red;
    }

    #dataForm {
        text-align: center;
        margin-top: 20px;
    }

    img {
        max-width: 50px;
        max-height: 50px;
    }

    .edit-input {
        width: 100%;
    }
  </style>

JS:
<script>
    var dataStore = []; // Array untuk menyimpan data

    function manageData() {
        var itemName = document.getElementById('itemName').value;
        var itemWeight = parseInt(document.getElementById('itemWeight').value);
        var itemImage = document.getElementById('itemImage').value;

        var data = {
            itemName: itemName,
            itemWeight: itemWeight,
            itemImage: itemImage
        };

        if (editMode) {
            // Update data pada array jika dalam edit mode
            dataStore[editedIndex] = data;
            editMode = false;
            editedIndex = -1;
        } else {
            // Tambahkan data baru ke dalam array
            dataStore.push(data);
        }

        // Refresh HTML table
        displayData();
        clearForm();
    }

    function deleteData(index) {
        // Hapus data dari array berdasarkan index
        dataStore.splice(index, 1);

        // Refresh HTML table
        displayData();
        clearForm();
    }

    function editData(index) {
        // Isi form dengan data yang akan di-edit
        document.getElementById('itemName').value = dataStore[index].itemName;
        document.getElementById('itemWeight').value = dataStore[index].itemWeight;
        document.getElementById('itemImage').value = dataStore[index].itemImage;

        // Set edit mode dan index yang akan di-edit
        editMode = true;
        editedIndex = index;
    }

    function displayData() {
        var tableBody = document.querySelector('#dataTable tbody');
        tableBody.innerHTML = ''; // Kosongkan tabel sebelum menambahkan data

        for (var i = 0; i < dataStore.length; i++) {
            var newRow = document.createElement('tr');
            var rowCount = i + 1;

            newRow.innerHTML = '<td>' + rowCount + '</td>' +
                '<td><span>' + dataStore[i].itemName + '</span></td>' +
                '<td><span>' + dataStore[i].itemWeight + '</span></td>' +
                '<td><img src="' + dataStore[i].itemImage + '" alt="Gambar Buah" style="max-width: 50px; max-height: 50px;"></td>' +
                '<td><button type="button" onclick="deleteData(' + i + ')">Hapus</button>' +
                ' <button type="button" onclick="editData(' + i + ')">Edit</button></td>';

            // Apply red background if weight is more than 5 kg
            if (dataStore[i].itemWeight > 5) {
                newRow.classList.add('red-bg');
            }

            tableBody.appendChild(newRow);
        }
    }

    function clearForm() {
        // Clear form values
        document.getElementById('itemName').value = '';
        document.getElementById('itemWeight').value = '';
        document.getElementById('itemImage').value = '';
    }

    var editMode = false;
    var editedIndex = -1;
</script>

OUTPUT:







Komentar

Postingan populer dari blog ini

Mini Project Dengan JS by Mikel ibrahim

Membuat sistem yang meng generate list sesuai input yang di masukkan menggunakan JavaScript