javascript - 第二次插入后文本未出现

标签 javascript jquery

这些代码正在工作,只是对于第二次或后续插入,消息“订单已添加”没有出现。其次,在我使用弹出窗口删除所有内容并单击查看当前订单后,出现消息“目前没有客户订单”。即使执行了代码也没有出现。

    const order = [];

    const customer = {
        name: '',
        totalCups: 0
    }

    const checkCustomerOrders = () => {
        if (order.length === 0) {
            $('.Mesg').show();
            $('.Mesg').text("No customer orders at the moment.").fadeTo(4000, 0);
        }
    }

    $('#AllOrders').hide(); 

    $('#btnAdd').click(function () {
        var item = $('#customerName');

        // Data structure Queue
        order.unshift(item.val());

        // UX
        $('.Mesg').text("Order added").fadeTo(4000, 0);

        // UI
        var orderElement = $('<div class="orderItem"></div>').text(item.val());
        $('#AllOrders').append(orderElement);

        // Reset textbox
        item.val("");        

        // Optional Design        
        $('#ViewAllOrders').click();
        debugger;
    })

    $('#ViewAllOrders').click(function () {
        checkCustomerOrders();
        $('#AllOrders').show(); 
        $('#CurentOrder').hide();
    })

    

    $('#ViewCurrentOrder').click(function () {
        debugger;
        checkCustomerOrders();
        $('#AllOrders').hide(); 
        $('#CurentOrder').show();

        var top = order[order.length - 1];
        console.log(top);

        $('#CurentOrder').empty();
        // UI
        var orderElement = $('<div></div>').text(top);
        $('#CurentOrder').append(orderElement);
    })

    $('#DeliverOrder').click(function () {
        debugger
        // Remove one element from array. FIFO.
        order.pop();
        // Element removed.

        // Remove the html element as well
        $(".orderItem:first").remove();

        // UX
        $('.Mesg').text("One customer order delivered").fadeTo(4000, 0);

        // Optional Design        
        $('#ViewAllOrders').click();
    })
html{
            font-size:1em
        }

        div.Mesg {
            height: 20px !important;
        }

        ul#menu {
            display: flex;
            list-style-type: none;         
            justify-content: space-around;            
            padding: 0;
            margin: 0;
        }

        ul#menu > li {
            display: block;
        }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="menu">
                <li><a id="ViewAllOrders" href="#">View all orders</a></li>
                <li><a id="ViewCurrentOrder" href="#">View current order in process</a></li>
                <li><a id="DeliverOrder" href="#">Deliver one order</a></li>
            </ul>            
        
        <hr />
        <div class="Mesg"></div>
        <hr />
        <div id="AddOrder">
            <input id="customerName" type="text" placeholder="Enter customer's name" />
            <input id="btnAdd" type="button" value="Add" />
        </div>
        <div id="AllOrders"></div>
        <div id="CurentOrder"></div>

是否是由于 fadeTo 方法所致?

最佳答案

fadeTo() 更改为 fadeOut() 应该可以解决此问题

    const order = [];

    const customer = {
        name: '',
        totalCups: 0
    }

    const checkCustomerOrders = () => {
        if (order.length === 0) {
            $('.Mesg').show();
            $('.Mesg').text("No customer orders at the moment.").fadeOut(4000, 0);
        }
    }

    $('#AllOrders').hide(); 

    $('#btnAdd').click(function () {
        var item = $('#customerName');

        // Data structure Queue
        order.unshift(item.val());

        // UX
        $('.Mesg').text("Order added").fadeOut(4000, 0, function(){ 
              $('.Mesg').text('');
              $('.Mesg').show();
        });

        // UI
        var orderElement = $('<div class="orderItem"></div>').text(item.val());
        $('#AllOrders').append(orderElement);

        // Reset textbox
        item.val("");        

        // Optional Design        
        $('#ViewAllOrders').click();
        debugger;
    })

    $('#ViewAllOrders').click(function () {
        checkCustomerOrders();
        $('#AllOrders').show(); 
        $('#CurentOrder').hide();
    })

    

    $('#ViewCurrentOrder').click(function () {
        debugger;
        checkCustomerOrders();
        $('#AllOrders').hide(); 
        $('#CurentOrder').show();

        var top = order[order.length - 1];
        console.log(top);

        $('#CurentOrder').empty();
        // UI
        var orderElement = $('<div></div>').text(top);
        $('#CurentOrder').append(orderElement);
    })

    $('#DeliverOrder').click(function () {
        debugger
        // Remove one element from array. FIFO.
        order.pop();
        // Element removed.

        // Remove the html element as well
        $(".orderItem:first").remove();

        // UX
        $('.Mesg').text("One customer order delivered").fadeOut(4000, 0);

        // Optional Design        
        $('#ViewAllOrders').click();
    })

关于javascript - 第二次插入后文本未出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56196511/

相关文章:

javascript - 包含第 3 方 iFrame 的安全风险

javascript - 如何在PHP中设置自定义月份开始日期和结束日期

javascript - 从网络浏览器应用程序读取和写入套接字

javascript - 仅在点击事件时显示所有指定的 div 元素

javascript - 用编辑表单替换 View 数据

jquery - Rails 4 - jQuery 或 Coffeescript 根据下拉选择显示/隐藏 <div>

jquery - jqplot 突出显示堆积柱形图

javascript - 尝试理解 Flux 架构

javascript - 使 dijit.form.currencytextbox 接受小数点后一位数字的负值

javascript - AJAX - 如何在不卡住浏览器的情况下一个一个地发出异步请求?