Tell us what’s happening:
Some numbers are not converted in the written code. Although everything should work correctly.
Your code so far
<!-- file: index.html -->
/* file: script.js */
/* 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/131.0.0.0 Safari/537.36
Challenge Information:
Build a Roman Numeral Converter Project - Build a Roman Numeral Converter
Please post your full current code, including both the JS and HTML
const button = document.getElementById("convert-btn");
const output = document.getElementById("output");
function convertToRomanNumber(num){
let converted = [];
let numStr = String(num);
if(num < 0){
return "Please enter a number greater than or equal to 1";
}else if(num >= 4000){
return "Please enter a number less than or equal to 3999";
}else if(numStr === ""){
return "Please enter a valid number";
}else{
//if num is four digit
if((num / 1000) >= 1){
let floored = Math.floor(num / 1000);
//thousands
for(let i = 0; i < floored; i++){
converted.push('M');
}
numStr = numStr.slice(1);
floored = Math.floor(num / 500);
//hunders
if(numStr[0] === "5"){
converted.push('D');
}else if(numStr[0] === "9"){
converted.push('CM');
}else if(numStr[0] === "1" || numStr[0] === "2" || numStr[0] === "3"){
let timeStr = '';
for(let i = 0; i < parseInt(numStr[0]); i++){
timeStr += "C";
}
converted.push(timeStr);
}else if(numStr[0] === "4"){
converted.push("CD");
}else if(numStr[0] === "6" || numStr[0] === "7" || numStr[0] === "8"){
let timeStr = 'D';
for(let i = 0; i < parseInt(numStr[0]); i++){
timeStr += "C";
}
converted.push(timeStr);
}
numStr = numStr.slice(1);
floored = Math.floor(num / 1);
// tens
if(numStr[0] === "5"){
converted.push("L");
}else if(numStr[0] === "6" || numStr[0] === "7" || numStr[0] === "8"){
let timeStr = "L";
for(let i = 5; i < parseInt(numStr[0]); i++){
timeStr += "X";
}
converted.push(timeStr);
}else if(numStr[0] === "9"){
converted.push("XC");
}else if(numStr[0] === "1" || numStr[0] === "2" || numStr[0] === "3"){
let timeStr = '';
for(let i = 0; i < parseInt(numStr[0]); i++){
timeStr += 'X';
}
converted.push(timeStr);
}else if(numStr[0] === "4"){
converted.push("LX");
}
numStr = numStr.slice(1);
floored = Math.floor(num / 1);
//one
if(numStr[0] === "5"){
converted.push("V");
}else if(numStr[0] === "4"){
converted.push("IV");
}else if(numStr[0] === "9"){
converted.push("IX");
}else if(numStr[0] === "1" || numStr[0] === "2" || numStr[0] === "3"){
let timeStr = "";
for(let i = 0; i < parseInt(numStr[0]); i++){
timeStr += "I";
}
converted.push(timeStr);
}else if(num[0] === "6" || num[0] === "7" || num[0] === "8"){
let timeStr = "V";
for(let i = 5; i < parseInt(numStr[0]); i++){
timeStr += "I";
}
converted.push(timeStr);
}
}
//if num is three digit
else if((num / 100) >= 1){
if(numStr[0] === "5"){
converted.push('D');
}else if(numStr[0] === "9"){
converted.push('CM');
}else if(numStr[0] === "1" || numStr[0] === "2" || numStr[0] === "3"){
let timeStr = '';
for(let i = 0; i < parseInt(numStr[0]); i++){
timeStr += "C";
}
converted.push(timeStr);
}else if(numStr[0] === "4"){
converted.push("CD");
}else if(numStr[0] === "6" || numStr[0] === "7" || numStr[0] === "8"){
let timeStr = 'D';
for(let i = 5; i < parseInt(numStr[0]); i++){
timeStr += "C";
}
converted.push(timeStr);
}
numStr = numStr.slice(1);
floored = Math.floor(num / 1);
// tens
if(numStr[0] === "5"){
converted.push("L");
}else if(numStr[0] === "6" || numStr[0] === "7" || numStr[0] === "8"){
let timeStr = "L";
for(let i = 5; i < parseInt(numStr[0]); i++){
timeStr += "X";
}
converted.push(timeStr);
}else if(numStr[0] === "9"){
converted.push("XC");
}else if(numStr[0] === "1" || numStr[0] === "2" || numStr[0] === "3"){
let timeStr = '';
for(let i = 0; i < parseInt(numStr[0]); i++){
timeStr += 'X';
}
converted.push(timeStr);
}else if(numStr[0] === "4"){
converted.push("XL");
}
numStr = numStr.slice(1);
floored = Math.floor(num / 1);
//one
if(numStr[0] === "5"){
converted.push("V");
}else if(numStr[0] === "4"){
converted.push("IV");
}else if(numStr[0] === "9"){
converted.push("IX");
}else if(numStr[0] === "1" || numStr[0] === "2" || numStr[0] === "3"){
let timeStr = "";
for(let i = 0; i < parseInt(numStr[0]); i++){
timeStr += "I";
}
converted.push(timeStr);
}else if(num[0] === "6" || num[0] === "7" || num[0] === "8"){
let timeStr = "V";
for(let i = 5; i < parseInt(numStr[0]); i++){
timeStr += "I";
}
converted.push(timeStr);
}
}
//if num is two digit
else if((num / 10) >= 1){
if(numStr[0] === "5"){
converted.push("L");
}else if(numStr[0] === "6" || numStr[0] === "7" || numStr[0] === "8"){
let timeStr = "L";
for(let i = 5; i < parseInt(numStr[0]); i++){
timeStr += "X";
}
converted.push(timeStr);
}else if(numStr[0] === "9"){
converted.push("XC");
}else if(numStr[0] === "1" || numStr[0] === "2" || numStr[0] === "3"){
let timeStr = '';
for(let i = 0; i < parseInt(numStr[0]); i++){
timeStr += 'X';
}
converted.push(timeStr);
}else if(numStr[0] === "4"){
converted.push("LX");
}
numStr = numStr.slice(1);
floored = Math.floor(num / 1);
//one
if(numStr[0] === "5"){
converted.push("V");
}else if(numStr[0] === "4"){
converted.push("IV");
}else if(numStr[0] === "9"){
converted.push("IX");
}else if(numStr[0] === "1" || numStr[0] === "2" || numStr[0] === "3"){
let timeStr = "";
for(let i = 0; i < parseInt(numStr[0]); i++){
timeStr += "I";
}
converted.push(timeStr);
}else if(numStr[0] === "6" || numStr[0] === "7" || numStr[0] === "8"){
let timeStr = "V";
for(let i = 5; i < parseInt(numStr[0]); i++){
timeStr += "I";
}
converted.push(timeStr);
}
}
//if num is one digit
else if(num < 10){
if(numStr[0] === "5"){
converted.push("V");
}else if(numStr[0] === "4"){
converted.push("IV");
}else if(numStr[0] === "9"){
converted.push("IX");
}else if(numStr[0] === "1" || numStr[0] === "2" || numStr[0] === "3"){
let timeStr = "";
for(let i = 0; i < parseInt(numStr[0]); i++){
timeStr += "I";
}
converted.push(timeStr);
}else if(num[0] === "6" || num[0] === "7" || num[0] === "8"){
let timeStr = "V";
for(let i = 5; i < parseInt(numStr[0]); i++){
timeStr += "I";
}
converted.push(timeStr);
}
}
return converted.join('');
}
}
button.onclick = function() {
let number = document.getElementById("number").value;
output.innerText = convertToRomanNumber(number);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap" rel="stylesheet">
<title>Roman Numeral Converter</title>
</head>
<body>
<div class="main-box">
<div class="box-header">
<h1 id="header-application">ROMAN NUMERAL CONVERTER</h1>
<p id="header-description">by wenwotrader</p>
</div>
<div class="main-input">
<p>Enter a Number:</p>
<input id="number" type="number">
<button id="convert-btn" type="submit">Convert</button>
</div>
<div class="main-result">
<p id="output"></p>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
Your code is too long for the challenge project. The error appears on:
Sorry, you cannot submit your code. Your code is 317861 bytes. We allow a maximum of 102400 bytes. Please make your code smaller and try again or request assistance on https://forum.freecodecamp.org. you have lot’s of hard code in your js code.