一、基础知识填空(每空1分,共22分)
1、JS中设置定时器的两种方法: setTimeout 、 setInterval
2、函数中内置接收参数的集合是: arguments
3、把函数体中的某个值返回到外面用: return
4、数组的基础知识和应用
A、在数组的后面追加一项(至少两种办法): arr.push 、 arr[arr.length] =x
B、删除数组的最后一项(至少两种办法): pop 、 arr.length—
C、克隆一份和原来一样的数组(至少两种): arr.concat() 、 arr.slice()
D、数组从小到大排序(可以处理10以上的数字): arr.sort((a,b)=>a-b)
E、实现找到第n项到第m项(包括n和m)的内容,返回一个新的数组(原有数组不变): arr.slice(n,m+1)
5、Math、Date常用的方法
获取n~m之间的随机整数: Math.round(Math.random()*(m-n)+n)
获取一组数字中的最大值和最小值: Math.max() 、 Math.min()
获取当前日期与时间: new Date().toLocaleString()
获取当前事件戳: new Date().getTime()
6、DOM操作方法84
获取元素所有的子节点: childNodes
获取上一个哥哥元素节点(可以不兼容): previousElementSibling
动态创建一个div标签,并且把其添加到body的末尾位置: (2分)
var ele = document.createElement(‘div’);
document.body.appendChild(ele);
或
document.body.innerHTML = document.body.innerHTML + ‘
删除元素的方法: ele.parentNode.removeChild(ele)
二、案例实践题
1、(12分)看需求实现相关的JS代码(常见面试题)
给#box下的li实现奇偶行变色
鼠标滑过li背景高亮展示,鼠标离开回归原有颜色
鼠标点击li弹出 ‘我是第N行’(N为索引+1),例如:点击第一个li弹出‘我是第1行’
<body>
<ul class="box" id="box">
<li>凑个字数,我是一个LI,我哈哈哈1</li>
<li>凑个字数,我是一个LI,我哈哈哈2</li>
<li>凑个字数,我是一个LI,我哈哈哈3</li>
<li>凑个字数,我是一个LI,我哈哈哈4</li>
<li>凑个字数,我是一个LI,我哈哈哈5</li>
<li>凑个字数,我是一个LI,我哈哈哈6</li>
</ul>
<script>
var boxList = document.querySelectorAll('#box>li');
for (var i = 0; i < boxList.length; i++) {
var item = boxList[i];
item.myIndex = i;
// 奇偶行变色
item.style.background = i % 2 === 0 ? '#FFF' : '#FFC0CB';
// 鼠标滑过的高亮选中
item.onmouseover = function () {
this.style.background = '#87CEFA';
};
item.onmouseout = function () {
this.style.background = this.myIndex % 2 === 0 ? '#FFF' : '#FFC0CB';
};
// 鼠标点击,弹出序号
item.onclick = function () {
alert(`哈哈哈,我是第 ${this.myIndex+1} 个LI!`);
};
}
</script>
2、(13分)仿照alert输出,自己编写myAlert函数。
执行myAlert(‘这是我自己写的alert’);会在页面上显示实参的语句与确定button,点击button,元素隐藏
<body>
<!-- 在这里编写你元素 -->
<div id="box" style="display: none">
<p></p>
<button>确定</button>
</div>
</body>
<script>
//在这里编写你的JS代码
function myAlert(text) {
var box = document.querySelector('#box'),
p = box.querySelector('p'),
button = box.querySelector('button');
p.innerText = text;
box.style.display = 'block';
button.onclick = function () {
box.style.display = 'none';
};
}
//button的事件绑定在函数里函数外都行
//必须封装函数
</script>
3、(12分)编写函数,实现传入的英文语句首字母大写。
每句用英文句号.结束。
function firstLetterUpper(str) {
var ary=[];
str.split('.').forEach(item => {
var str = item.substring(0,1).toUpperCase()+item.substring(1);
// 这里截取的方法用substring substr slice,都行
ary.push(str);
})
//用forEach也行 for循环也行
return ary.join('.');
}
function firstLetterUpper(str) {
// map写法
return str.split('.').map(item => {
return item.substring(0,1).toUpperCase()+item.substring(1);
}).join('.');
}
firstLetterUpper('i want to eat noodles.')
//=>'I want to eat noodles.'
firstLetterUpper('hello,my name is Wincy.i am 13 years old.')
//=>'Hello,my name is Wincy.I am 13 years old.'
4、(12分)任意数求和,并求平均数,结果保留两位小数
function find_average() {
//在这里编写你的代码
var total = 0,
n = 0;
for (var i = 0; i < arguments.length; i++) {
var item = +arguments[i];
if (isNaN(item)) continue;
total += item;
n++;
}
// [Number].toFixed([n]):保留小数点后面N位,结果是字符串
return (total / n).toFixed(2);
}
find_average(1,1,1)// 1
find_average(1,2,3)// 2
find_average(1,2,3,4)// 2.5
find_average(1,2,'A',4)// 2.33
5、(17分)做一个抽奖程序,
页面中有一个区域显示中奖人员的编号,在JS中写一段代码,要求每隔1秒中随机创建一个四位的数字(每一位数字的取值范围0-9),当10秒结束后,结束定时器,最后显示的四位数字即是中奖的号码
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>
<script>
//setInterval方式1
// 生成随机数
function createRandom(n,m){
return Math.round(Math.random()*(m-n)+n);
}
//每秒钟做的事情 创建一个四位数的随机数字 每一位的取值范围 0-9 在放到页面上显示
function fn(){
//var num=`${createRandom(0,9)}${createRandom(0,9)}${createRandom(0,9)}${createRandom(0,9)}`;
var num='';
for (var i = 0; i < 4; i++) {
var n=createRandom(0,9);
num+=n;
}
document.body.innerHTML=document.body.innerHTML+`${num}<br/>`;
}
var timer=setInterval(fn,1*1000); //参数(函数名称/时间)
setTimeout(function(){
clearInterval(timer);
},10*1000);
</script>
//按照次数停止
<script>
// 生成随机数
function createRandom(n,m){
return Math.round(Math.random()*(m-n)+n);
}
//每秒钟执行一次fn
var timer=setInterval(fn,1*1000); //参数(函数名称/时间)
//每秒钟做的事情 创建一个四位数的随机数字 每一位的取值范围 0-9 在放到页面上显示
var cishu=0;
function fn(){
//var num=`${createRandom(0,9)}${createRandom(0,9)}${createRandom(0,9)}${createRandom(0,9)}`;
if(cishu==10){
//清除定时器
clearInterval(timer);
//打断函数执行
return;
}
var num='';
for (var i = 0; i < 4; i++) {
var n=createRandom(0,9);
num+=n;
}
document.body.innerHTML=document.body.innerHTML+`${num}<br/>`;
cishu++;
}
</script>
<script>
// 回调方式
var divs = document.querySelectorAll('div');
var num = 0;
function createRandom(n, m) {
return Math.round(Math.random() * (m - n) + n);
}
function lottery() {
setTimeout(() => {
if (num > 9) {
return;
}
var str = `${createRandom(0, 9)}${createRandom(0,9)}${createRandom(0, 9)}${createRandom(0, 9)}`;
divs[num].innerText = str;
num += 1;
lottery();
}, 1000);
}
lottery();
</script>
6、(12分)给定一个随机的非负数,必须以相反的顺序返回数组中该数的数字。
//方式1
function dealNum(num) {
var ary=(num+'').split('').reverse();
var ret=ary.map(item=>{
return +item;
});
return ret;
}
//方式2
function dealNum2(num) {
var str=(num+'');
var ary=[];
for(var i=str.length-1;i>=0;i--){
ary.push(+str[i]);
};
return ary;
};
dealNum(348597) => [7,9,5,8,4,3]