2013-10-03 141 views
-1

的文本框中,尝试根据单击哪个按钮,将文本框中的值加1或减1。不能让工作...不知道什么是错将1添加到函数

<!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> 

小提琴Here

代码是不工作
+3

你的情况是语法错误。 –

+2

在任何人回答你的问题之前,你能接受关于你以前的问题(如果有的话)的正确答案吗?如果你不断回答问题而不回答正确的答案,人们将不太愿意在未来帮助你。 –

+0

没想到你必须这样做。它说不要说感谢或+1。 il现在做它 –

回答

3

你为什么只用2个选项?

function display(buttonclickedvalue) 
{ 
    var value = parseInt(document.getElementById('numbertxt').value); 

    if(buttonclickedvalue == '+') 
    { 
     value += 1; 
    } 
    else 
    { 
     value -= 1; 
    } 

    document.getElementById('numbertxt').value = value 
} 

这样你只需要验证一次而不是两次。 (当然,你需要添加更多的验证,当你想要更多的选择)。

+0

仅仅因为现在有2个选项并不意味着以后不会再有更多选择了吗? – thgaskell

+0

这就是为什么我说“你需要添加更多的验证,当你想要更多的选择”。我没有看到你会用案例的理由。我个人发现if-then-else结构具有更好的概述。特别是对于初学者来说,这可能是更好的选择。 – nkmol

2

两个原因:一个:

  1. case表达式结束,所以代码无法成功解析。

  2. numbernumber1变量引用,不是元素,所以分配给他们一个.value属性不会做你想做的。 (它做一些事情,非常简单,但没有什么持续。)

而且,这是最好的总是给parseInt第二个参数,这是基数(基数),它在解析时应该使用。

如果你想使用switch对于这一点,那么:

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; 
    } 
} 

在那里,我已经添加了缺少:,使用default:代替case "-":为第二个,给parseInt基数,并用0如果由于某些原因,该字段包含某些无法解析为int的内容(在这种情况下,parseInt将返回NaN,这是错误的,因此改用|| 0部分;有关详细信息,请参见JavaScript's Curiously Powerful OR Operator (||))。

但通常,当只有两种情况下,你会使用if或条件运算符:

if

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); 
} 
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; 
} 

此外,case需要:,并break; currentVal+=1结束不一样currentVal=currentVal+1,但海事组织更容易阅读。

0

试试这个,这将是帮助你,这是很容易理解

HTML

<input type = text id="numbertxt"> 
</br> 
<input type = button value="+" > 
<input type = button value="-" > 

JS

$('input[type=button]').click(function(){ 
    var newnum=eval($('#numbertxt').val()); 
    if($(this).val()=='+') 
    {newnum++; 
     $('#numbertxt').val(newnum); 
    }else 
    {newnum--; 
     $('#numbertxt').val(newnum); 
    } 
    }); 

小提琴Here