JSFiddle - React, Tailwind, and code Playground

HTML

<h1>動態比例計算器</h1>
<label for="inputNumber">請輸入一個整數:</label>
<input type="number" id="inputNumber" min="1" />
<button onclick="calculate()">計算</button>

<h2 id="result"></h2>
<h2 id="minInteger"></h2>

<h3>各百分比計算結果:</h3>
<div id="percentage-results"></div>

<h3>設定百分比:</h3>
<div id="percentage-container"></div>
<button onclick="addPercentage()">新增百分比</button>

CSS

body {
  font-family: Arial, sans-serif;
  margin: 20px;
}
.percentage-item {
  margin-bottom: 10px;
}
.percentage-item input {
  margin-right: 5px;
}
.result-item {
  margin-bottom: 10px;
}

JavaScript

// 預設四個百分比
let percentages = [0.003, 0.007, 0.025, 0.03]
let percentageCount = percentages.length // 記錄當前百分比的數量

// 當用戶添加新百分比時,呼叫此函數
function addPercentage() {
  let newPercentageDiv = document.createElement("div")
  newPercentageDiv.classList.add("percentage-item")

  newPercentageDiv.innerHTML = `
                <label>百分比 ${percentageCount + 1}:</label>
                <input type="number" step="0.001" min="0" placeholder="輸入百分比">
                <button onclick="removePercentage(this)">刪除</button>
            `

  document.getElementById("percentage-container").appendChild(newPercentageDiv)
  percentageCount++
}

// 刪除百分比項目
function removePercentage(button) {
  let percentageDiv = button.parentNode
  percentageDiv.remove()
  percentageCount--
}

// 當用戶計算時,根據所有百分比計算總和並找出最小符合條件的整數
function calculate() {
  let inputNumber = parseInt(document.getElementById("inputNumber").value)
  if (isNaN(inputNumber) || inputNumber <= 0) {
    alert("請輸入有效的整數!")
    return
  }

  let sum = 0
  percentages = [] // 清空百分比陣列
  let resultsContainer = document.getElementById("percentage-results")
  resultsContainer.innerHTML = "" // 清空原有結果

  // 收集用戶輸入的所有百分比
  let percentageInputs = document.querySelectorAll(".percentage-item input")
  percentageInputs.forEach((input) => {
    let percentage = parseFloat(input.value) / 100 // 使用者輸入百分比
    if (!isNaN(percentage) && percentage > 0) {
      percentages.push(percentage)
    }
  })

  // 顯示每個百分比計算結果
  percentages.forEach((p, index) => {
    let percentageValue = Math.round(inputNumber * p)
    sum += percentageValue

    // 顯示單個百分比結果,並將百分比保留2位小數
    let resultItem = document.createElement("div")
    resultItem.classList.add("result-item")
    resultItem.innerText = `百分比 ${index + 1}: ${(p * 100).toFixed(2)}% => ${percentageValue}`
    resultsContainer.appendChild(resultItem)
  })

  // 顯示總和
  document.getElementById("result").innerText = "總和: " + sum

  // 查找最小符合條件的整數
  let...