本文中的题目都是来自渡一的题目的当天的题目以及JS的练习题目。
第一天
1.html标签身上的lang属性下面说法不正确的是(C)
A.定义html标签内使用的语言
B.向搜索引擎表示该页面为html页面,并且为英文网站
C.如果lang="en"表示在页面中不允许存在中文
(解析:lang=“en”是告诉收索引擎爬虫这个网页是英文的,只是主体语言是英文,而比如说p标签内部可以写中文,并不是不可以包含中文。)
<p>可以存着在中文</p>
2.下面有关html Doctype的描述,说法错误的是?(D)
A.它的责任就是告诉浏览器文档使用哪种html或者xhtml规范
B.不同文档模式主要影响CSS内容的呈现,尤其是浏览器对盒模型的解析
C.不同的浏览器在混杂模式下的行为差异非常大,如果不使用某些hack技术,跨浏览器行为根本就没有一致性可言
D.如果在文档开始处于没有发现文档类型声明,则所有浏览器都会开启严格模式
(解析:浏览器的模式有三种,混杂模式,正常模式,严格模式,其中如果没有进行doctype声明,浏览器会进入怪异渲染模式,而不是严格模式,严格模式是es6的use district 的模式)
3.meta标签的用途错误的是(D)
A.元素可提供有关于页面的元信息(meta-information),比如针对搜索引擎和和更新频度的描述和关键字
B.meta元素提供了关于网站的各种信息。
C.元素除去charset属性外,都是http-equiv属性name属性结合content来使用
D.如果想要告诉搜索引擎你的站点的描述的主要内容是什么可以设置
<meta name="description" content="淘宝网 - 亚洲较大的网上交易平台,提供各类服饰、美容、家居、数码、话费/点卡充值… 数亿优质商品,同时提供担保交易(先收货后付款)等安全交易保障服务,并由商家提供退货承诺、破损补寄等消费者保障服务,让你安心享受网上购物乐趣!" />
<meta name="keyword" content="淘宝,掏宝,网上购物,C2C,在线交易,交易市场,网上交易,交易市场,网上买,网上卖,购物网站,团购,网上贸易,安全购物,电子商务,放心买,供应,买卖信息,网店,一口价,拍卖,网上开店,网络购物,打折,免费开店,网购,频道,店铺" />
分析:描述的话,前面的name应该是description;如果说是keywords的话,后面显示的内容应该是关键字。
每日一题
function getInfo(member,year){
member.name = 'css';
year = '1998';
}
var person = {name:'html'};
var birthYear = '1997';
getInfo(person,birthYear);
console.log(person,birthYear);
分析:这道题目考察的知识点是引用值和原始值在函数的传递,引用值传递的是地址,所以说在调用getInfo函数的时候,第一个参数person是引用值,所以说舛讹遇到member中的是地址,所以当member.name在改变的时候person.name也发生了变化,而birthYear是常量,只是传入进去后被重新赋值,而在外借访问birthYear还是原来的值。
结果展示:{name: “css”} "1997"
第二天
- css基础选择器种类有哪些:id选择器、class选择器、标签选择器、通配符选择器、属性选择器。
css权重问题
(1)!important,加在样式属性值后,权重值为10000
(2)内联样式,如:style="",权重值为1000
(3)ID选择器,如:#content,权重值为100
(4)类,伪类和属性选择器,如:content、:hover权重值为10
(5)标签选择器和伪元素选择器,如:div,p,:before权重值为1
(6)通用选择器( * ) 、子选择器(>)、相邻选择器(+)、同胞选择器(~)、权重值为0
2. 下列代码中demo1,demo2,demo3的背景颜色分别是 tomato,blue,red。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
/* 第一个:权重是10+10+10=30 */
.wrapper .demo:first-child{
background-color: tomato;
}
/* 第一个:10+10=20 */
.wrapper .demo1{
background-color: yellow;
}
/* 第二个:20 */
.wrapper .demo2{
background-color: pink;
}
/* 第三个:100 */
#demo3{
background-color: red;
}
/*覆盖:20 */
.wrapper .demo{
width: 100px;
height: 100px;
background-color: blue;
}
/* 背景是紫色 */
.wrapper *{
background-color: purple;
}
</style>
</head>
<body>
<div class="wrapper">
<div id="demo1" class="demo demo1">demo1</div>
<div id="demo2" class="demo demo2">demo2</div>
<div id="demo3" class="demo demo3">demo3</div>
</div>
</body>
</html>
结果展示:
3. 下面关于form属性中说法错误的是( D )
A.method 属性一共有两个选项,post和get
post和get的区别:传输数据不一样。post在body里面 ,get在url后面(浅显,答案不算满分,当一旦能劫持到一个请求的时候,安全性都是一样的,可以采取加密方式)
B.action属性用来定义提交给服务器处理程序的地址
C.enctype属性用来定义表单数据进行编码的方式
D.enctype属性的默认值是:text/plain
分析:当 method 属性值为 post 时,enctype 就是将表单的内容提交给服务器的 MIME 类型 。可能的取值有:
application/x-www-form-urlencoded:未指定属性时的默认值。
multipart/form-data:当表单包含 type=file 的 元素时使用此值。
text/plain:出现于 HTML5,用于调试。
每日两题
function Car(){
this.name = '兰博基尼';
return {
name : "玛莎拉蒂",
}
}
var car = new Car();
console.log(car.name);
分析:打印输出的是car的name,代码分析之后Car构造函数之后返回一个对象,其中有name属性,它指的是玛莎拉蒂。
function foo(){
this.count++;
}
foo.count = 0;
for(var i = 0;i<10;i++){
if(i%5){
foo();
}
}
console.log(foo.count);
分析:分析for循环,循环的参数i实在0到9之间,然后出了模5之后0的没有执行函数,即当i是0或者5的时候没有执行,那么执行了8次foo函数,但是this指向的是window,并不是foo,所以说,每次都无法修改foo.count,所以说,最终的结果就是0。
每日一题
var value = !function(a,b){
return !!a&&!!b;
}(1,2);
console.log(value);
分析:首先分析!符号,既然是取非,那么后面的只能是一个表达式,而不是一个函数,应该是立即执行函数,那么就意味着求出立即执行函数的结果然后进行取反。下面分析这个函数,传入的参数的值是1,2,然后**!!操作使得1,2的值变为true,true那么函数的返回值就是true,取反之后的值是false,所以最后的值就是false。**
第三天
- 关于盒模型的说法下面说法正确的是(A)
A. 标准盒子模型中:盒子的总宽度 = 左右margin + 左右border + 左右padding + width
B. IE盒子模型中:盒子总宽度 = 左右margin + 左右border + width C. 标准盒子模型中:盒子的总宽度 = 左右margin + 左右border + width
D. IE盒子模型中:盒子总宽度 = width
分析:在盒模型中,有两张类型,一种是标准盒模型,一种是怪异盒模型。
在标准模型中,盒子的总宽度 = 左右margin + 左右border + 左右padding + width。
在怪异盒模型中,width = content+padding+boder - 关于定位的说法下列选项中正确的是(A)
A. position:fixed相对于视口进行定位
B. position的值中只有absolute会脱离文档流
(解析fixed和absolute都会脱离文档流)
C. position:absolute绝对定位元素相对于视口进行定位,脱离文档
(解析:先查找父级的定位,如果父级没有定位相对于文档进行定位,脱离文档流)
D. position: sticky; 是css3中的值相对于父级定位,不会脱离文档流
static: 静态得 不允许设置位置得
relative 相对于自身原来位置(没有设置定位得时候得位置)进行定位
absolute 相对于最近有定位得父级 如果没有最近有定位得父级那么相对于视口进行定位
会使元素脱离正常得文档流
fixed 相对于视口进行定位 并且会脱离文档流
sticky 相对于最近得含有滚动特点的元素(overflow不为visible的元素)
不会使元素脱离正常的文档流的 - 关于bfc的说法正确的是(A)
A. bfc为块级格式化上下文,是一个独立的渲染区域,定义了内部的块级元素如何布局
B. bfc为css中的一个属性,可以通过bfc属性显示修改 (解析:bfc 不是一个属性而是一个渲染方式的概念)
C. bfc可以通过float和overflow两个属性来触发 (解析:float: left/right overflow: hidden)
D. 触发bfc的元素可能会产生margin塌陷的问题 (解析:解决margin塌陷的问题)
bfc: block format context 块级格式化上下文
触发bfc的方法:
3. folat
4. position: absolute
5. overflow: 不能是visible
6. display: inline-block
每日一题
var arr = [1,2,3,4];
arr.length = 1;
console.log(arr);
分析:改变数组的长度之后,书组内应该只剩下第一个元素,所以打印出来的就是[1].
第四天
1.关于border-radius的说法下面错误的是(D)
A.border-radius是css3中的新属性
B.border-radius设置的圆角属性,值的个数可以为1,2,3,4,5,8
C.border-radius为复合属性,可以拆分为border-top-left-radius,border-top-right-radius,borde-bottom-left-radius,border-bottom-right-radius
D.border-radius:50%;表示绘制一个正圆
分析:在设置border-radius设置圆角属性的时候,1个值的时候,设置的为全部,从左上,右上,右下,左下的属性;两个值的时候,左上和右下是一对,右上和左下是一对;同理可以设置四个方向的值;另外,可以设置椭圆形,比如说设置八个属性
border-radius:10px 20px 30px 40px /10px 20px 30px 40px;一个一个进行对应,比如说左上的椭圆属性是10px,10px。
只有在width等于height的时候,才会是一个正圆。
2.关于float浮动下面说法正确的是:(B)
A.float元素会产生浮动流,产生浮动流的元素<-对错其父级看不到他们
B.产生bfc的元素和文本类属性的元素以及文本都可以看到浮动元素
C.可以通过为浮动元素设置clear:both属性来清除浮动(解析:可以通过浮动元素的子元素清除浮动流 浮动流的三件套(content””,clear:both ,display:block))
D.浮动元素会脱离文本流
分析:C选项,浮动的三件套是需要添加在浮动元素的兄弟节点上,而不是浮动元素;D选项,浮动元素会脱离文档流,文档流的范围比文本流要大。
3.关于line-height属性下列说法正确的是(C)
A.line-height设置行高大小单位为px
不设单位:代表倍数相对于自身的font-size的倍数
(解析:单位可以为em,px ,%,)
B.默认值为1em(解析:line-height的默认值是:normal)
C.该属性可继承
D.Line-height的值为2和200%是一样的
分析:line-height的单位有三个px,em,%,在不设置单位的时候,它的默认属性是normal,会随着浏览器的变化而变化。下面进行分析三个单位在设置在line-height的不同,最好的是直接写数字,它的行高会随着子元素自己的font-size*倍数=line-height,但是em和%是已经固定为父元素的而继承下来,比如说父元素的font-size是12px,line-height是200%或者是2em,那么子元素的line-height就是24px继承而来。
每日一题
var list = [1+2,1*2,1/2];
console.log(list);
结果:
第五天
-
常用的主流浏览器分别是—————————及其对应的内核——————————
Chrome 以前是Webkit内核,现在是Blink内核;
Firefox Gecko
IE Trident
Safri webkit
Opera 最初是自己的Presto内核,后来是Webkit,现在是Blink内核; -
下列哪个选项不是原始值?(D)
A.”OoO”
B.NaN(解析:NaN是非数 数字类型 number)
C.null
D.[]
String ,number, Boolean,function object undefined
栈内存:原始值:string, number ,boolean null undefined
堆内存:引用值:object(对象) 数组[] function 正则表达式
3. 应用小题目
每日一题
//以下哪个是通过类名获取元素的方法
//document.getElementByClassname
//document.getElementById
//document.creatElement
//window.getComputedStyle
分析:第一个是通过类名获取元素(动态的),第二个是通过id获取元素,第三个是创造一个html元素,最后一个是得到元素样式。
第六天
- 下面函数执行的结果是什么?
var a = 10;
function show(){
console.log(a);
}
function foo(){
var a = 100;
show();
}
foo();
分析:虽然说show函数执行的时候,他的大环境是window,所以说window.a就是10,请注意和下面的这道题目进行区分:
var a = 10;
function foo(){
var a = 100;
function show(){
console.log(a);
}
show();
}
foo();
分析:这道题目的show函数实在foo的内部,形成了闭包,所以说在打印输出a的时候,在GO中查找,所以输出100。
2. 下面函数的执行结果是什么?
"use strict"
function foo(a){
arguments[0]= 1;
console.log(a,arguments[0]/1)
}
foo(2);
分析:在试试用严格模式之后,arguments与函数的参数列表不产生映射。
3. 下面的代码执行结果是什么?
function Bar(cb){
if(typeof cb !== "function"){
return;
}
for(var i = 1; i < 4; i++){
console.log(cb(i, i - 1));//i- 1 等于基底
//radis 2 - 36 范围
// parseInt(1,0) 零的一进制 一
// parseInt(2,1) 二的一进制 NAN:非数
// parseInt(3,2) 三的二进制 NAN:非数
}
}
Bar(parseInt)
每日一题
console.log(123..toString());
分析:此时输出的结果是123,为什么是两个点?因为为了避免误会,第一个小数点可以看做123.0.后面的才调用toString()方法。下面是更好的写法:
var num = 123;
console.log(num.toString());
第七天
- 下面哪个选项不是typeof的返回值?
分析:typeof的返回值类型:number,string,boolean,object,function,undefined。其中typeof(null)是object。
2. 下面的输出结果是什么?
console.log(0 == null);
console.log(0 == undefined);
console.log(0 == false);
console.log(0 == "");
console.log(false == null);
分析:这道题目考查的知识点是比较运算符(发生隐式类型转化)。
3. 下面的代码输出的结果是什么?
console.log(+0 === -0);
console.log([] == []);
console.log([] == "");
分析:本道题目考查的还是比较运算符号。分为两种,一种是弱比较,要进行隐式类型转化,另外一种是强比较,直接进行比较。A选项的话,为true,因为+0和-0的补码是相同的,B选项是false,引用数据类型比较的是地址,C选项前面的[]先进行tostring方法转化为" ",所以二者相等。
第八天
1.阅读下面的代码片段,输出的结果分别是?()
console.log(1 + + + + + "1");
console.log("100" / 0);
console.log(0 / 0);
console.log(true > "1");
console.log(NaN == NaN);
分析:第一个看一看作为(1+(+(+(1)))),所以结果是2,第二个首先"100"转化为100,然后除以0,结果必定是infinity,第三个的话没有意义,所以是非数nan,第四个将左面的true转化为1,右面的"1"转化为1,二者相等,最后一个非数不等于非数,非数连自己都不认识,所以是false。
2.下面代码的执行结果是什么?
var a = 1;
a = (++a,a++);
console.log(a);
a = (a++,++a);
console.log(a);
分析:本道题目考查的知识点是()运算符号以及++a和a++的问题。括号的话会依次执行括号内的语句,最后返回的是最后一个语句,所以说第二行的代码执行就是a++变成2,a++是先用a,所以a被赋值为2。下面的()中全部被执行,所以是4.
3.下面代码的执行结果是什么?
var b = 1;
console.log(null && ++b);
console.log(b);
分析:&&惰性运算符,一旦前面的是假,不会执行后面的语句,所以返回的是null和1。
第九天
//下面的代码运行之后,set中保存的是什么?
var set = new Set();
var a = [];
set.add(a);
a.push(1);
set.add(a);
a = [1];
set.add(a);
a.pop();
set.add(a);
set.add([]);
set.add([1]);
分析:这道题目考查的是ES6中Set集合的相关知识,Set是一个特殊的集合,其中不允许有重复的元素,特别需要注意的是,函数,数组,对象存储的都是地址。下面我进一步一步进行分析,并写出每一步的set集合中的元素的结果。
第一步 set.add(a)之后,set集合变为[[]],接下来a中添加了1,再将a添加到set集合中,但是a的地址没有变,所以说set集合还是变为了[[1]],接下来 a = [1];这是赋值了一个新的数组,因为地址不同,然后加入到集合中,但是之后又进行了弹出,所以说,set集合变成了[[1],[]],接下里加入a,但还是地址一样,无法加入,接下来的 set.add([]);
set.add([1]);都可以加入,因为都是全新的地址,所以说,最后的set集合变成了[[1],[],[],[1]]。
第十天
- 下面代码的输出结果是什么?
function bar (){
a = 10;
function a(){};
console.log(a);
}
bar();
console.log(a);
分析:考查的是预编译的相关知识。分析bar函数中的AO对象,预编译的过程分为三个步骤,1.变量声明,形参 2.形参实参相统一 3. 函数声明整体提升。在AO预编译的换届的时候,已经对a进行了函数声明,在接下来对函数的执行过程中,a = 10进行了覆盖,所以说在控制台打印输出的时候,输出的结果是10。但是在外部,没有对a变量的声明,也没有进行未经声明的赋值,所以说,最后会报错。
2. 下面代码的执行结果是什么?
var a = 10;
var b = 20;
function swap (a,b){
var temp = a;
a = b;
b = temp;
}
swap(a,b);
console.log(a,b);
分析:在进行传入的时候,传入的是a,b的值,而不是a,b,所以说a,b的值没有发生变化。但是,对比一下下面的两个例子:
var a = 10;
var b = 20;
function swap (){
var temp = a;
a = b;
b = temp;
}
swap(a,b);
console.log(a,b);
var obj = {a:10,b:20};
function swap (a,b){
var temp = a;
a = b;
b = temp;
}
swap(obj.a,obj.b);
console.log(obj);
- 请判断下面的代码。
console.log(0.3-0.2 == 0.1);
分析:由于计算机中对于浮点数的存储是不精确的,所以说0.1的结果是
所以不正确。
第十天
1.下面代码的执行结果是什么?
var value = "web";
function bar(){
var value = "duyi";
function foo(){
console.log(value);
}
return foo;
}
bar()();
分析:考查函数的返回值和闭包的概念。bar函数执行之后返回的是一个foo函数,foo是在bar函数的内部声明,所以说打印出的就是duyi。
2. 编写一段代码,可以实现下面的功能。
分析:addCounter是一个函数,返回的是一个函数,这个函数也有返回值来返回最终的值。
结果展示
function addCounter(n){
return function (){
return arguments[0] + n;
}
}
console.log(addCounter(1)(2));
- 下面代码的执行结果是什么?
function a(){
a = 100;
console.log(a);
}
a();
console.log(a);
分析:两个输出的都是a,第一个输出a是因为a=100未经声明就进行赋值提升到全局,然后输出的时候艳这作用域链找到输出,第二个输出a是因为a=100覆盖了function a(go对象)。
4. 下面代码的输出结果是什么?
var a= 10;
(function a(){
a = 100;
console.log(a);
}());
console.log(a);
分析:立即执行函数(自执行函数)的两个特征:1.函数名称的标识符只能在函数的内部进行访问,在函数的外部是无法访问的。2.绑定为函数名的标识符,不能再绑定其他符号(再给a赋值时不起作用的)。
结果:function a(){…} 10
5. 下面代码的输出结果是什么?
var bar = (function (arg){
arguments[0] = '你好';
return function(){
console.log(arg + arguments[0])
}
})('再见')
bar('duyi');
分析:bar在赋值的时候,是一个立即执行函数的结果,是一个函数,传入的参数是duyi,而立即执行函数中的arg被赋值为再见,在赋值为你好。最终的输出结果就是你好,duyi。
6. 下面代码的输出结果是什么?
if(function Bar(){}){
console.log('bar');
}
console.log(typeof Bar);
分析:对象在进行隐式类型转化的时候会被转化为true,所以if函数会进行运行,打印输出,最后输出Bar的时候,if语句中的判断已经将Bar进行了转化,所以就是undefined。
7. 编写一个程序。
function Hero(){
this.health = 50;
Hero.prototype.attack = function (){
this.injured(parseInt(Math.random()*60+20));
}
Hero.prototype.injured = function (num){
if(num>this.health){
console.log('哦,我死了!');
this.health = 0;
}else{
console.log('我还能挺一回合!');
this.health -= parseInt(Math.random()*60+20);
}
}
}
var h = new Hero();
h.attack();
第十一天
1.下面代码的输出结果是什么?
console.log(1 + undefined);
console.log(1 + null);
console.log(null + undefined);
console.log(true + false);
console.log(3 + '6');
console.log(2 + []);
console.log(2 + {a : 12});
console.log([] + {});
console.log({} + []);
console.log({} + []);
console.log(3 + {});
console.log({} + 3);
分析:这道题考查js中加法运算符号中的隐式类型转化的相关知识,要首先明确的是,数字加数字,字符串加字符串。所以说undefined使用Number()转化之后变成NaN,null经过转化之后的结果是0。所以说第一个的结果是NaN,第二个的结果是1,第三个的结果是NaN,第四个的结果是1,第五个的结果是‘36’。
对于引用值来说,要进行隐式类型转化,首先要考虑的是valueof方法,观察返回值是原始值还是引用值,如果依然是引用值,那么就要调用tostring方法,所以说[].valueof依旧是一个数组,所以在调用toString()方法之后是一个“”空字符串,所以是,第六个的结果是2,下面的结果只要是引用值,那就先进行valueof方法,观察返回结果是不是原始值,由于数组和对象的返回值是""和[object Object],下面的问题都迎刃而解了。
第十二天
1.说说你对new的理解。
//new 操作符具体干了什么?
function Foo(bar){
// var this = {};
// this.__proto__ = Foo.prototype;
this.bar = bar;
this.fn = function (){};
// return this;
}
var f = new Foo(1);
console.log(f);
// 1.返回对象this
// 2.通过this调用的属性和方法将会被赋值
// 3.this.__proto__连接到Foo.prototype的原型链
// 4.隐式的返回this
第十三天
1.说出下面的代码输出结果是什么?如何进行改正使得代码输出0,1,2,3,4?
for(var i = 0;i<5;i++){
setTimeout(function(){
console.log(i);
},i*1000)
}
结果展示:
分析:下面的代码的输出的结果是5个5,因为在js中,settimeout以及setinterval都是优先级低于主函数的进行,所以当进行到5快要跳出for循环的时候才进行了settimeout的执行,改变的方式有两种,一种是使用立即执行函数进行闭包传参,第二种是用es6中的let方法,结合块级作用于来进行。下面介绍的方法是利用立即执行函数。
for(var i = 0;i<5;i++){
(function(i){
setTimeout(function(){
console.log(i);
},i*1000)
})(i)
}
结果展示:
第十四天
1.分析下面的代码段,说出输出的是什么?
var name = "window";
var obj = {
name : "obj",
};
function show (){
console.log(this.name);
}
show.call(obj);
show();
分析:本道题考查的知识点是call,this的指向问题。show.call(obj)这段代码段使用call来改变this的指向,从而相当于obj.name打印出来,所以第一个输出的是obj,第二个show函数执行,此时show函数声明与执行都在window下面,所以此时的this指向window,输出的是window。
"use strcit"
var name = "window";
var obj = {
name : "obj",
};
function show (){
console.log(this.name);
}
show.call(obj);
show();
分析:使用严格模式之后,不能在全局直接使用this,this应该有明确的指向,所以说第二个show函数执行的话,会报错。
知识点:document.getElementByTagName是根据结点获取节点的函数,返回的是类数组,不是数组。
第十五天
实现一个不需要新的参数就可以使得参数a,b的调换
function swap(a,b){
a = a + b;
b = a - b;
a = a - b;
}
分析:因为不能有新的参数,所以说我们要先存储两个数的值在a当中,通过整合之后的相减得到b的值,最后得到a的值。
第十六天
阅读下面的代码,并说出相对应的输出
var arr = [];
arr[0] = 'a';
arr[1] = 'b';
arr.foo = 'c';
console.log(arr.length);
arr.length += arr.foo.length;
console.log(arr.length);
结果:
分析:声明一个数组并进行前两位的赋值,arr.foo = 'c’这个代码段是进行数组中有一个属性foo,它的值是c,类似于对象,但是arr.length += arr.foo.length强制使得arr的长度加一,所以第二位是空,最后的长度是3。
arr的最终状态
第十七天
1.阅读下面的代码,并说出代码输出的结果
var count = 0;
for (var i = 0; i < 10; i++) {
// 执行10次
// 1s 后执行
setTimeout(function () {
count += i;
}, 0);
}
结果:结果是100。
分析:在js中,函数有一定的优先级顺序,主函数的优先级是要高于settimeout以及setinterval的优先级,所以说在for循环执行十次的基础上,即当i变成10之后,执行setinterval中的函数,所以说十次之后的值变为100.
2.编程题目:请用优雅的方式输出今天是星期几?
console.log('今天是星期'+ "日一二三四五六".charAt(new Date()).getDay())
分析:既然是用优雅的方式,那么我们肯定不是直接写进去,当然想到的是date对象来构造时间,构造时间对象之后,调用其中的 getDay() 来获取当天的从 Date 对象返回一周中的某一天 (0 ~ 6),可以得知获得的是一个数字,但是我们想要的是中文的日期,所以说我们要做的就是能否自己写一个字符串,然后通过使用charAt方法来定位到我们想要的结果。
知识点
第十八天
阅读下面的代码并说出执行结果
<div id="test" style="height: 40px; width: 40px; background-clip: blue;" ></div>
var test = document.getElementById("test");
console.log(test.style.height);
test.style.height = '20';
console.log(test.style.height);
结果:40px 40px
分析:通过getElementById获得到dom元素div#test之后,他的属性应该是包含单位的,而且我们在赋值的时候也应该加上单位,所以说第二次赋值为20是无效的,仍然是之前的40px。
小知识点:getComputedStyle可以设置元素的样式。
下面代码的执行结果是什么?
<div id="test2" style="height: 40px; width: 40px; background-color: red; padding: 10px; border: 1px solid lime; margin: 1px;"></div>
var test2 = document.getElementById("test2");
console.log(test2.offsetHeight);
console.log(test2.clientHeight);
结果:62 60(注意没有单位)
分析:offsetHeight需要加上元素的border,但是clientHeight不需要。