2018京东笔试编程:完善JavaScript,实现删除一行,增加一行,计算总量。不能改动给出的html。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018京东笔试编程:完善JavaScript,实现删除一行,增加一行,计算总量。不能改动给出的html。相关的知识,希望对你有一定的参考价值。

已给出的代码:

<style>
        body,html{
            padding: 0;
            margin: 0;
            font-size: 14px;
            color: #000000;
        }
        table{
            border-collapse: collapse;
            width: 100%;
            table-layout: fixed;
        }
        thead{
            background: #3d444c;
            color: #ffffff;
        }
        td,th{
            border: 1px solid #e1e1e1;
            padding: 0;
            height: 30px;
            line-height: 30px;
            text-align: center;
        }
</style>
<script>
        function add() {     
        }
        function bind() {
        }
    </script>
<table id="jsTrolley">
    <thead><tr><th>名称</th><th>价格</th><th>操作</th></tr></thead>
    <tbody>
    <tr><td>产品1</td><td>10.00</td><td><a href="javascript:void(0);">删除</a></td></tr>
    <tr><td>产品2</td><td>30.20</td><td><a href="javascript:void(0);">删除</a></td></tr>
    <tr><td>产品3</td><td>20.50</td><td><a href="javascript:void(0);">删除</a></td></tr>
    </tbody>
    <tfoot><tr><th>总计</th><td colspan="2">60.70(3件商品)</td></tr></tfoot>
</table>

我做的并没有ac,因为交了卷才发现window.onload时w一不小心大写了。分享一下,给自己攒点人品。下面是我的解答:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body,html{
            padding: 0;
            margin: 0;
            font-size: 14px;
            color: #000000;
        }
        table{
            border-collapse: collapse;
            width: 100%;
            table-layout: fixed;
        }
        thead{
            background: #3d444c;
            color: #ffffff;
        }
        td,th{
            border: 1px solid #e1e1e1;
            padding: 0;
            height: 30px;
            line-height: 30px;
            text-align: center;
        }
        .la{
            border-collapse: collapse;
            width: 100%;
        }
    </style>
    <script>
        var data=[
            {name:‘产品4‘,price:10.00,operation:‘‘},
            {name:‘产品5‘,price:20.02,operation:‘‘},
            {name:‘产品6‘,price:40.10,operation:‘‘},
            {name:‘产品7‘,price:30.04,operation:‘‘}
        ];

        function binder(x){
            return  ‘<tr><td class="name">‘+data[x].name+
                ‘</td><td class="price">‘+data[x].price+
                ‘</td><td class="operation"><a href="javascript:void(0);" class="add">‘+data[x].operation+
                ‘</a></td></tr>‘;

        }
        var table= document.createElement(‘table‘);
        var item=[],i;
        for( i=0;i<data.length;i++){
            data[i].operation=‘增加‘;
            item[i]=binder(i);  //利用闭包
        }

        table.innerHTML=item;
        table.id="anotherTable";

        function add() {
            var addList= document.getElementsByClassName("add");
            for(i=0;i<addList.length;i++){
                addList[i].onclick=function(){
                    if(this.parentNode.parentNode.parentNode.parentNode.id!=‘jsTrolley‘) {
                        this.text = ‘删除‘;
                        //alert(i+4);拿到整行tr节点:this.parentNode.parentNode
                        var jsTrolley = document.getElementById(‘jsTrolley‘);
                        jsTrolley.children[1].insertBefore(this.parentNode.parentNode, jsTrolley.children[1].firstElementChild); //这是增加到最前面,使用这个也可以
                        //jsTrolley.appendChild(this.parentNode.parentNode); //这是增加到最后面
                        sum();
                    }else{
                        bind();
                    }
                };
            }

        }

        function bind() {
            var jsTrolley= document.getElementById(‘jsTrolley‘);
            var arrA=document.getElementsByTagName("a");
            for(i=0;i<arrA.length;i++){
                arrA[i].onclick=function( ){
                    this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);
                    sum();
                };
            }
        }

        function sum(){
            var sum =0;
            var num=0;
            var childs=document.getElementsByTagName("tfoot")[0].childNodes.item(0).childNodes;
            //alert(childs.length);
            var arrA=document.getElementsByTagName("a");
            for(i=0;i<arrA.length;i++){
                if(arrA[i].parentNode.parentNode.parentNode.parentNode.id==‘jsTrolley‘) {
                    num++;
                    var price = arrA[i].parentNode.parentNode.childNodes.item(1).innerHTML;
                    sum = sum + Number(price);
                }
            }
            sum=Number(sum).toFixed(2);
            childs[1].innerHTML=sum+‘(‘+num+‘件商品)‘;
        }

        window.onload = function () {
            bind();
            document.body.appendChild(table);
            add();//注意顺序,必须先document.body.appendChild(table),渲染出table来,再执行add函数
            sum();

        };

    </script>

</head>
<body>
<table id="jsTrolley">
    <thead><tr><th>名称</th><th>价格</th><th>操作</th></tr></thead>
    <tbody>
    <tr><td>产品1</td><td>10.00</td><td><a href="javascript:void(0);">删除</a></td></tr>
    <tr><td>产品2</td><td>30.20</td><td><a href="javascript:void(0);">删除</a></td></tr>
    <tr><td>产品3</td><td>20.50</td><td><a href="javascript:void(0);">删除</a></td></tr>
    </tbody>
    <tfoot><tr><th>总计</th><td colspan="2">60.70(3件商品)</td></tr></tfoot>
</table>
</body>

</html>

  

 



以上是关于2018京东笔试编程:完善JavaScript,实现删除一行,增加一行,计算总量。不能改动给出的html。的主要内容,如果未能解决你的问题,请参考以下文章

在线编程笔试练习2(京东)

京东笔试编程题:采购单+保卫方案

京东2021校园招聘笔试(8.27编程部分)——数据开发工程师(数列变换A了9%)

拼多多2018提前批前端笔试总结

京东研发类-编程题-买水果

京东笔试(小帆)