最近小弟在自学前端,在自己练习个加减效果的代码时遇到个问题想请教大神们
html代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" type="text/css" href="css/css.css"/>
<script type="text/javascript" src="js/JS.js"></script>
</head>
<body>
<a href="#" id="a1">-</a>
<form>
<input type="text" name="" id="id" value="1" />
</form>
<a href="#" id="a2">+</a>
</body>
</html>
css代码:
a{
text-decoration: none;
display: block;
background-color: #eee;
width: 30px;
height: 30px;
line-height: 30px;
}
#a1{
float: left;
margin-right: 20px;
text-align: center;
margin-top: 2px;
}
#a2{
float: left;
margin-left: 20px;
text-align: center;
margin-top: 2px;
}
form{
float: left;
}
form input{
display: block;
width: 40px;
height: 30px;
text-align: center;
border:1px solid #eee;
}
想问的问题在js里
js代码:
window.onload=function(){
var input=document.getElementById("id").value;
document.getElementById("a1").onclick=function(){
if(isNaN(input))
{
alert("请输入数字");
}
else{
if(input>1)
{
document.getElementById("id").value=parseInt(input.value)-1;
}
}
}
}
用input变量接受了“id"的value值,然后用isNaN()判断变量是否是非数字型和parseInt()转换变量是成整数,然而没有执行结果,未报错,不能执行减法
但把变量变成了document.getElementById("id").value之后才有效,
报错,可以执行减法,改过的代码如下,小白请教
window.onload=function(){
var input=document.getElementById("id").value;
document.getElementById("a1").onclick=function(){
if(isNaN(document.getElementById("id").value))
{
alert("请输入数字");
}
else{
if(document.getElementById("id").value>1)
{
document.getElementById("id").value=parseInt(document.getElementById("id").value)-1;
}
}
}
}
首先,你第一个if(isNaN(input))那个右括号是中文括号
其次,前一份代码里你的input在window.onload时就已经确定了,后面没有任何修改,因此你无论输入什么input都保留onload时的值(应当把var input那一行放到onclick的函数里面)
然后,input是document.getElementById("id").value,前面那个代码里为什么又有input.value,这样只能parseInt(undefined)搞出一个NaN
😱😱谢谢 十分感谢