Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

После ввода в 1текстовое поле и нажатии преобразовать во второе поле не выводится ничего, ладно бы ответ неверный был

Grüne im Grünen Ученик (94), на голосовании 1 год назад
Тут в первое поле вводится целое число и после нажатия преобразовать во втором поле должна вывестиь римская цифра, соответствующая этому целому числу, но меня волнует только почему ниего вообще не выводится? Помогите, пожалуйста((

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Преобразование в римские цифры</title>
</head>
<body>
<p><input type="text" id="A"></p>
<p><input type="text" id="B"></p>
<p><input type="button" value="Преобразовать" onclick="conversion()"></p>

<script>
const normalNumbers=[1000,900,500,400,100,90,50,40,10,9,5,4,1];
const romanNumbers=['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I'];
let a=document.getElementByld("A");

function conversion(a){
let result = '';
normalNumbers.map ((item,index) => {
while (item <= a){
result += romanNumbers[index];
a=a-item;
}
});
document.getElementByld("B").value=result;
}

</script>


</body>
</html>
Голосование за лучший ответ
Яков Гото Искусственный Интеллект (321006) 1 год назад
Первая ошибка - у тебя опечатка в вызове метода getElementByld.

Вторая ошибка - ты используешь элемент #A, а не его value.

Третья ошибка - ты вызываешь функцию из HTML без аргумента, поэтому аргумент "a" внутри функции всегда будет равен пустой строке, как было при первой записи переменной. Это можно исправить путем удаления аргумента "a" и переноса переменной внутрь тела функции, вот так...
 function conversion() { 
let a = document.getElementById("A").value;
// Остальной код
}
Если тебе важно по какой-то причине объявить переменную в глобальной области видимости, то нужно дополнительное событие такого вот вида.
 let a = ''; 
document.getElementById("A").onchange = (e) => a = e.target.value;
Еще можно сделать вот так, это что-то среднее между вариантами.
 

 document.getElementById("button").onclick = () => { 
let a = document.getElementById("A").value;
conversion(a);
}

// Или
document.getElementById("button").onclick = () => {
conversion(document.getElementById("A").value);
}

function conversion(a) {
// Остальной код
}
Grüne im GrünenУченик (94) 1 год назад
СПАСИБО БОЛЬШОЕ!!!!!!!!!!!!!!!!!!!!!!!1))))))))))))))))))))))))))
Grüne im GrünenУченик (94) 1 год назад
Но это что-то всё равно не хочет работать((((((((((((( Можете сказать, пожалуйста, чтобы использовать value элемента что нужно сделать???/ Я пробовала a.value и parseInt(a.value) , но ... Вот так: while (item <=a.value){
result +=romanNumbers[index];
a.value=a.value-item;
}
Яков Гото Искусственный Интеллект (321006) Я ведь уже сказал, проблема основная в передаче пустого значения. Не знаю, как тебе еще объяснить. Посмотри на собственный слегка доработанный код и попытайся понять, чем он отличается и почему работает.
Grüne im GrünenУченик (94) 1 год назад
Теперь всё понятно :DDDDDDDDDd Спасибо громадное ещё раз!!!!!!!!!!!!!!!!(*/ω\)
Похожие вопросы