Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从函数向文本框添加1_Javascript_Html - Fatal编程技术网

Javascript 从函数向文本框添加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) {

根据单击的按钮,尝试向文本框中的值添加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>

加减数字
功能显示(按钮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);
        }
         });