Tell us what’s happening:
Number 4 seems to fail. although when I test it, it works. When you click on the #convert-btn element without entering a value into the #number element, the #output element should contain the text “Please enter a valid number”.
Then I’m having issues with my for loop to convert the number.
Your code so far
<!-- file: index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" src="./styles.css">
</head>
<body>
<input id="number" type="number">
<button id="convert-btn">Convert</button>
<div id= "output"></div>
<script src="./script.js"></script>
</body>
</html>
/* file: script.js */
const input = document.getElementById("number");
const convertBtn = document.getElementById("convert-btn");
const output = document.getElementById("output");
const numerals = [
["M", 1000],
["CM", 900],
["D", 500],
["CD", 400],
["C", 100],
["XC", 90],
["L", 50],
["XL", 40],
["X", 10],
["IX", 9],
["V", 5],
["IV", 4],
["I", 1]
];
input.addEventListener("keydown", e => {
if (e.key === "Enter"){
convert.click()
}
});
convertBtn.addEventListener("click", () => {
let value = input.value;
if (!value) {
output.innerText = "Please enter a valid number"
} else if (value < 0) {
output.innerText = "Please enter a number greater than or equal to 1"
} else if (value > 4000){
output.innerText = "Please enter a number less than or equal to 3999"
} else {
let result = "";
for (const [roman,number] of numerals) {
while (number < value) {
result += roman;
value -= number;
}
output.innerText = result;
}
}
})
/* file: styles.css */
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0
Challenge Information:
Build a Roman Numeral Converter Project - Build a Roman Numeral Converter