javascript - 我正在编写 JavaScript 和 html 代码,但是如何添加两个整数并将它们放入结果文本中
问题描述
我正在尝试在结果文本框中添加两个整数。我正在尝试添加它们并在结果框中显示“(num1 + num2 = value)”之类的公式公式“5 + 5 = 10”。但是我仍然不知道如何添加整数。
请忽略其余的代码,一旦我得到加法数字,希望我能完成剩下的工作。
<!DOCTYPE html>
<html>
<head>
<title>Math Tutor</title>
<script src="mht.js"></script>
</head>
<body>
<h1>Math Tutor</h1>
<lable>Enter a number</lable>
<input type="text" id="n1"><br>
<lable>Enter next number</lable>
<input type="text" id="n2"><br>
<input type="button" value="+" id="addNum" onclick="Addition">
<input type="button" value="-" id="subNum" onclick="subtrack">
<input type="button" value="/" id="divNum" onclick="divide">
<input type="button" value="*" id="multiNum" onclick="multiply"><br>
<input type="text" name="result" id="res" ><br><br>
<lable>Slope Calculation</lable><br>
</body>
</html>
var $ = function(id){
return document.getElementById(id);
};
var add = function(){
var num1 = parseInt($("n1").value);
var num2 = parseInt($("n2").value);
var sum = num1 + num2;
document.getElementByI("result") = (n1 "+" n2 "=" sum );
};
window.onload = function() {
$("Addition").onclick = add;
};
``
解决方案
每个操作不需要单独的函数 - 只需将单个事件处理程序分配给所有按钮并使用其他逻辑(在本例中为按钮的值)来确定要执行的操作。使用parseFloat
而不是parseInt
处理用户输入允许(不出所料)浮点数而不是整数。虽然使用input
元素来显示结果不是问题,但它看起来确实很不寻常——尤其是考虑到有一个专门用于这种情况的 HTML 元素——即output
元素。
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>Math Tutor</title>
<style>
html, html *{ box-sizing:border-box; }
body{ margin:0; padding:0; display:flex; flex-direction:column; align-items:center; align-content:center; justify-content:center; width:100%;height:100vh;font-family:calibri,verdana,arial; }
form{ display:flex; justify-content:center; border:1px solid black; width:80%; height:50%; margin:auto; }
h1{ writing-mode: vertical-rl; transform: rotate(180deg); font-size: 1.5rem; letter-spacing: 0.15rem; margin:auto; background:black; color:white; height:100%; padding:0.5rem; text-align:center; }
label{ display:flex; flex:1; align-items:center; flex-direction:row; width:100%; padding:0.5rem; margin:auto; }
label:before{content:attr(data-label);text-transform:capitalize}
input{ padding:0.5rem;margin:auto }
div{ display:flex; flex-direction:row; flex:1; padding:1rem; margin:auto; }
div > input{ flex:1;margin:0 0.25rem }
output{ width:60%; height:3rem; margin:auto; text-align:center; font-size:2rem; }
</style>
<script>
/* utility to emulate PHP's `sprintf` function for formatting a string */
String.prototype.sprintf = function() {
return [ ...arguments ].reduce( ( p,c ) => p.replace(/%s/,c), this );
};
document.addEventListener('DOMContentLoaded',()=>{
/* get references to the form elements */
let form=document.forms.mathtutor;
let number_1=form.querySelector('input[type="number"][name="number-1"]');
let number_2=form.querySelector('input[type="number"][name="number-2"]');
let output=document.querySelector('output');
/* obtain reference to the function buttons and assign event handler */
Array.prototype.slice.call( form.querySelectorAll('div > [type="button"]') ).forEach( bttn=>{
bttn.addEventListener('click',function(e){
let product;
/* ensure that the values from the input elements are numbers */
let i1=parseFloat( number_1.value );
let i2=parseFloat( number_2.value );
/* perform whatever calculation is required according to button pressed */
switch( this.value ){
case '+': product=i1 + i2; break;
case '-': product=i1 - i2; break;
case '/': product=i1 / i2; break;
case 'x': product=i1 * i2; break;
}
/* format the output and display the result */
output.innerText='%s %s %s = %s'.sprintf( i1, this.value, i2, product );
});
})
});
</script>
</head>
<body>
<form name='mathtutor' method='post'>
<h1>Mathematics tutor</h1>
<label for='number-1' data-label='number 1'><input type='number' name='number-1' required /></label>
<label for='number-2' data-label='number 2'><input type='number' name='number-2' required /></label>
<div>
<input type='button' value='+' />
<input type='button' value='-' />
<input type='button' value='/' />
<input type='button' value='x' />
</div>
</form>
<output></output>
</body>
</html>
推荐阅读
- css - 如何在 sass 中反转数字
- spring-boot - spring-boot-starter-data-redis-reactive 2.4+ NOAUTH 需要身份验证吗?
- sql - 两个表JOIN
- c++ - 如何在 C++ 中将 rhs 值添加到类(运算符重载)
- php - CMS 自定义:使用 php 在两段后自动添加文本
- php - PHP 使用文件 URL 从另一台服务器下载文件
- cmake - 将最新的 llvm-project 构建为 redhat 的 rpm
- plot - 有没有办法获得选定柱的高/低值?
- sql - 如何使用 ANSISQL 操作 GROUP BY 行?
- javascript - 如何从 vue3 中的动态输入字段中获取数据