Javascript 从函数向文本框添加1
根据单击的按钮,尝试向文本框中的值添加1或减去1。我不能上班。。。不知道怎么了Javascript 从函数向文本框添加1,javascript,html,Javascript,Html,根据单击的按钮,尝试向文本框中的值添加1或减去1。我不能上班。。。不知道怎么了 <!DOCTYPE HTML> <html> <head> <title>Add and Subtract Numbers</title> <body> <script> function display(buttonclickedvalue) { switch (buttonclickedvalue) {
<!DOCTYPE HTML>
<html>
<head>
<title>Add and Subtract Numbers</title>
<body>
<script>
function display(buttonclickedvalue)
{
switch (buttonclickedvalue)
{
case"+"
var number= parseInt(document.getElementById('numbertxt').value);
number.value = number + 1;
break;
case"-"
var number1= parseInt(document.getElementById('numbertxt').value);
number1.value = number1 -1;
break
}
}
</script>
<form name="calculations">
<input type = text id="numbertxt">
</br>
<input type = button value="+" onclick="display(this.value)">
<input type = button value="-" onclick="display(this.value)">
</form>
</body>
</head>
</html>
加减数字
功能显示(按钮ClickedValue)
{
开关(按钮ClickedValue)
{
大小写“+”
var number=parseInt(document.getElementById('numberText').value);
number.value=number+1;
打破
案例“-”
var number1=parseInt(document.getElementById('numberText').value);
number1.value=number1-1;
打破
}
}
拨弄代码不起作用的两个原因:
case
表达式以:
结尾,因此无法成功解析代码number
和number1
变量指的是数字,而不是元素,因此对其赋值。value
属性并不能满足您的要求。(它做了一些事情,非常短暂,但没有持久的东西。)parseInt
第二个参数,这是它在解析时应该使用的基数(基数)
如果要为此使用开关
,则:
function display(buttonclickedvalue)
{
var numfield = document.getElementById('numbertxt'),
num = parseInt(numfield.value, 10) || 0;
switch (buttonclickedvalue)
{
case "+":
numfield.value = num + 1;
break;
default:
numfield.value = num - 1;
break;
}
}
在这里,我添加了缺少的:
,使用默认值:
而不是大小写“--”:
作为第二个值,给定parseInt
一个基数,如果由于某种原因字段包含无法解析为int的内容,则使用0
(在这种情况下,parseInt
将返回NaN
,这是错误的,因此将使用|0
部分;有关详细信息,请参阅)
但通常只有两种情况时,您会使用if
或条件运算符:
function display(buttonclickedvalue)
{
var numfield = document.getElementById('numbertxt'),
num = parseInt(numfield.value, 10) || 0;
numfield.value = num + (buttonclickedvalue === "+" ? 1 : -1);
}
如果
:
function display(buttonclickedvalue)
{
var numfield = document.getElementById('numbertxt'),
num = parseInt(numfield.value, 10) || 0;
if (buttonclickedvalue === "+")
{
numfield.value = num + 1;
}
else
{
numfield.value = num - 1;
}
}
条件运算符:
function display(buttonclickedvalue)
{
var numfield = document.getElementById('numbertxt'),
num = parseInt(numfield.value, 10) || 0;
numfield.value = num + (buttonclickedvalue === "+" ? 1 : -1);
}
当然,最后一个可以以可读性为代价进一步压缩:
function display(buttonclickedvalue)
{
var numfield = document.getElementById('numbertxt');
numfield.value = (parseInt(numfield.value, 10) || 0) + (buttonclickedvalue === "+" ? 1 : -1);
}
你从未在某个地方设置过值,你更改了值,但没有对其进行任何操作。我已使用了你的函数并对其进行了一些更新:
function display(buttonclickedvalue){
var currentVal = parseInt(document.getElementById('numbertxt').value, 10); // save current value
switch (buttonclickedvalue){
case"+"
currentVal += 1; // add one.
break;
case"-"
currentVal -= 1; // subtract one
break
}
// set it back in input (you forgot this:)
document.getElementById('numbertxt').value = currentVal;
}
另外,案例
需要一个:
,而中断
应该以结尾;
currentVal+=1
与currentVal=currentVal+1
相同,但我更容易阅读。为什么您甚至使用只有两个选项的用例
function display(buttonclickedvalue)
{
var value = parseInt(document.getElementById('numbertxt').value);
if(buttonclickedvalue == '+')
{
value += 1;
}
else
{
value -= 1;
}
document.getElementById('numbertxt').value = value
}
这样,您只需验证案例一次,而不是两次。
(当然,当您需要更多选项时,您必须添加更多验证)。试试这个,这会对您有所帮助,这很容易理解 HTML
Fiddle您的案例在语法上是错误的。在任何人回答您的问题之前,请您接受您之前问题的正确答案(如果有)?如果你一直问,而不回来标记正确的答案,人们将来会不太愿意帮助你。我不认为你必须这样做。上面写着不要说谢谢或+1。我现在就做,只是因为现在有2个选项,并不意味着以后不会有更多选项。这就是为什么我说“你需要更多选项时必须添加更多验证”。我看不出你为什么要使用用例。我个人认为if-then-else结构有更好的概述。特别是对于初学者来说,这可能是一个更好的选择。
$('input[type=button]').click(function(){
var newnum=eval($('#numbertxt').val());
if($(this).val()=='+')
{newnum++;
$('#numbertxt').val(newnum);
}else
{newnum--;
$('#numbertxt').val(newnum);
}
});