#javascript #html
#javascript #HTML
Вопрос:
Я пытаюсь создать калькулятор, чтобы … ну, что-то вычислить. В любом случае, я пытаюсь настроить 4 переменные, которые вводятся пользователем, слишком 4, используя отправку формы. Однако, что бы я ни делал, я не могу установить переменные. Помощь была бы признательна!
<!DOCTYPEhtml>
<html>
<head>
<title>NatHisCalc</title>
</head>
<body>
<h1><center><b><p>Test</p></b></center></h1>
<center><b><p id='output'>loading...</p></b></center>
<center><b><p id='output2'>loading...</p></b></center>
<center><b><p id='output3'>loading...</p></b></center>
<center><b><p id='output4'>loading...</p></b></center>
<form id="a" action="/action_page.php">
Input X <input type="number" name="x"><br><br>
<input type="button" onclick="calc()" value="Submit">
</form>
<form id="a" action="/action_page.php">
Input X <input type="number" name="y"><br><br>
<input type="button" onclick="calc()" value="Submit">
</form>
<form id="a" action="/action_page.php">
Input X <input type="number" name="a"><br><br>
<input type="button" onclick="calc()" value="Submit">
</form>
<form id="a" action="/action_page.php">
Input X <input type="number" name="b"><br><br>
<input type="button" onclick="calc()" value="Submit">
</form>
<script>
function calc() {
var x = document.getElementById("x").submit();
var y = document.getElementById("y").submit();
var a = document.getElementById("a").submit();
var b = document.getElementById("b").submit();
var u = (0.101*(y/100))*(480000*(a/100))
var j = (0.581*(x/100))*(120000*(b/100))
if (x > 150 || x < 50) {
window.alert('Hold on... Those inputs will result in an unreasonable output. You can click ');
}
var preresult = j u;
if (preresult < 177000) {
document.getElementById('output').innerHTML = 'Test';
} else {
document.getElementById('output').innerHTML = 'Test1';
}
if (u > 179999) {
document.getElementById('output').innerHTML = 'Test2';
}
document.getElementById('output2').innerHTML = 'Test3' j;
document.getElementById('output3').innerHTML = 'Test4 ' u;
document.getElementById('output4').innerHTML = 'Test5 ' preresu<
}
</script>
</body>
</html>
Комментарии:
1. Почему бы не создать четыре поля ввода и одну кнопку отправки вместо четырех полей ввода и четырех кнопок? Для выполнения ваших вычислений, не должен ли пользователь должен заполнить все четыре поля?
Ответ №1:
Заглянул в ваш код, кажется, что вы все слишком усложнили, чем это должно быть. Прежде всего, вы не вызываете submit
функцию на входе, чтобы получить ее значение. Если вы хотите получить значение x
, то вы просто получаете доступ к value
свойству следующим образом document.getElementById("x").value
. Во-вторых, вам действительно не нужны четыре кнопки, все, что вам нужно сделать, это ОДНА кнопка, которая отправляет форму, а добавление required
полей ввода заставляет браузер не отправлять форму, пока не будут заполнены все формы. Наконец, id
атрибут должен быть уникальным на всей вашей странице. У вас есть и форма, и поле ввода в качестве идентификатора a
, что неприемлемо. Он не покажет ошибки, но доставит вам неприятности. Вы можете видеть, что я сделал здесь, где я предотвратил отправку формы при нажатии кнопки и просто вызвал calc
функцию для выполнения вычисления.
<!DOCTYPEhtml>
<html>
<head>
<title>NatHisCalc</title>
</head>
<body>
<h1><center><b><p>Test</p></b></center></h1>
<center><b><p id='output'>loading...</p></b></center>
<center><b><p id='output2'>loading...</p></b></center>
<center><b><p id='output3'>loading...</p></b></center>
<center><b><p id='output4'>loading...</p></b></center>
<form onsubmit="event.preventDefault(); calc();" action="/action_page.php">
Input X <input type="number" id="x" required><br><br>
Input Y <input type="number" id="y" required><br><br>
Input A <input type="number" id="a" required><br><br>
Input B <input type="number" id="b" required><br><br>
<input type="submit" value="Submit">
</form>
<script>
function calc() {
var x = document.getElementById("x").value;
var y = document.getElementById("y").value;
var a = document.getElementById("a").value;
var b = document.getElementById("b").value;
var u = (0.101*(y/100))*(480000*(a/100))
var j = (0.581*(x/100))*(120000*(b/100))
if (x > 150 || x < 50) {
window.alert('Hold on... Those inputs will result in an unreasonable output. You can click ');
}
var preresult = j u;
if (preresult < 177000) {
document.getElementById('output').innerHTML = 'Test';
} else {
document.getElementById('output').innerHTML = 'Test1';
}
if (u > 179999) {
document.getElementById('output').innerHTML = 'Test2';
}
document.getElementById('output2').innerHTML = 'Test3' j;
document.getElementById('output3').innerHTML = 'Test4 ' u;
document.getElementById('output4').innerHTML = 'Test5 ' preresu<
}
</script>
</body>
</html>