2018京东前端笔试题笔试题

14 + 16 单选+不定项

感觉选择考的还是比较基础的,cookie / 本地存储 / 网络协议 / CSS3新特性 / HTML5新元素 剩下的记不起来了,对了还考了Vue和react


编程题2道,第二道没时间看了,刚开始还觉得时间很充裕,然后就卡到第一道编程题上了,第一道题考的就是原JavaScript操作DOM,好在可以用编译器调bug,不像下午考搜狗,写CSS样式,直接在考卷上写,完全不知道自己写出来的对不对,也无法调整,言归正传,具体说下这道题,很像之前写过的购物车页面,动态的增加删除,动态渲染页面,比如数量和总价,只是这道题不能用框架。创建和删除一个节点,这个好说,主要是卡在如何遍历一个table

1 . 首先通过题目给的table id 获得该对象

2. tableObj.rows.length; 获得行数

3. tableObj.rows[x].cells[y].innerText 可以获得x行y列的值

4.遍历table

function show(){
	var	tableRowInfo ="";
	tableObj = document.getElementById("jsTrolley");
	for(var i =0 ;i<tableObj.rows.length ; i++){
		
		for(var j=0 ;j<tableObj.rows[i].cells.length ; j++){
			tableRowInfo  +=  tableObj.rows[i].cells[j].innerText + " ";
		}
		console.log(tableRowInfo); // 打印每行信息
		tableRowInfo ="";	
	}
}

接下来又卡到删除上了,

先说一个遇到的问题,

<body>
	
<a id='a1' href="javascript:void(0);">测试用1</a>

    <script type="text/javascript">
		function t(){
			var c= document.getElementById("a1");
			var b = 10;
			c.setAttribute("onclick","javascript:alert(b)");
			// 注意 ! 此处有坑! 此时无法获取b,要将b声明成全局变量后才可以访问!

		}
		t();
	</script>

</body>

就是卡到这里,每次给链接设置onclick 属性:javascript:src.removeChild(tar),scr 和tar 都会报undefined,将他们改成全局变量就可以正常访问了。

接下来的就是小问题了,每次添加商品/删除商品后,记得重新渲染下总计(包括商品数量和总价),还有就是用js操作dom如何获得祖先元素/父元素/同胞元素也需要好好再掌握下了,不经常写就是记不住。

最后,说下感受,刚考完还感觉十分可惜,感觉可以做出来时间就差一点,其实晚上静静的想想,把代码写完,发现要处理的细节还是蛮多的,每一个小点都能反应出对知识的掌握程度,总体来说还是很弱,不过还是想鼓励下自己,最近苦练JavaScript还是小有成效。

把完整代码贴上,有兴趣的可以直接黏贴拷贝查看效果

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">
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>
</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>

<script type="text/javascript">



function add(items) {
 
    sum = 60.70;
    for(var i =0 ;i<items.length ;i++){
        var add = document.createElement("tr");
        var src = document.getElementsByTagName("tbody");
        add.innerHTML = "<td>"+items[i].name+"</td><td>"+items[i].price+"</td><td><a href='javascript:void(0);'>删除</a></td>";
        src[0].appendChild(add);
        sum +=items[i].price;
    }
    //var num = 3 +items.length;
    var tableObj = document.getElementById("jsTrolley");
    var num = tableObj.rows.length -2;
    tableObj.rows[4+items.length].cells[1].innerText  =sum.toFixed(2)+"("+num+"件商品)";

}

function bind() {
 	
 	var arr = document.getElementsByTagName("a");
 	var src = document.getElementsByTagName("tbody");
 	s = src[0];
 	var len = arr.length;
 	for(var i =0 ;i<len ;i++)
 	{
		arr[i].setAttribute("onclick","foo(s,this)");
 	}


}

function foo(x,y){
	var tar = y.parentNode.parentNode;
	x.removeChild(tar);
	var v = y.parentNode.previousSibling.innerHTML;
	sum -=v;
	//console.log(sum);
	var tableObj = document.getElementById("jsTrolley");
	var num = tableObj.rows.length -2;
	//console.log(sum2.toFixed(2)+"---"+num2);
	tableObj.rows[tableObj.rows.length-1].cells[1].innerText = sum.toFixed(2)+"("+num+"件商品)";
	
}	

var items = [{name:'ilv',price:10.0},{name:'ilv2',price:10.0}];

add(items);
bind();


function show(){
	var	tableRowInfo ="";
	tableObj = document.getElementById("jsTrolley");
	for(var i =0 ;i<tableObj.rows.length ; i++){
		
		for(var j=0 ;j<tableObj.rows[i].cells.length ; j++){
			tableRowInfo  +=  tableObj.rows[i].cells[j].innerText + " ";
		}
		console.log(tableRowInfo); // 打印每行信息
		tableRowInfo ="";	
	}
}
show();


</script>


</body>
</html>



  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值