发表于: 2018-05-18 23:44:56

1 544


今天完成的事情:

1. 修改 css 任务十响应式部分。

2. 学习 sass less 的初步使用。

3. 完成 css 任务十一。


明天的计划:

1. css 任务十二 

2. js 高级程序设计第六章


遇到的问题:


1.在任务十中,下图中的蓝色按钮无反应。  


原因是这样的,先列出html 结构:


span元素就是蓝色的按钮,通过绝对定位到 select 上。此时的层叠关系是 span > select  。

所以当点击蓝色按钮的时候,select 是没有反应的。

解决:

既然是层叠的问题,把 select 的 z-index 设置得比 span 高就可以了。


select { z-index:1000}  span {z-index:500}


但是设置完后没有我们要的效果, span 的层叠依旧在 select 上 ,没有改变。


查看f12 , span 的 z-index 为500, 而 select 的 z-index 值依然为 auto (默认值)。


查看百度后 , 原来是 z-index 设置值是有条件的。

   


此时的 select 没有设置定位, 所以不生效是合理的。


所以设置  select 的 positon 值为 : relative  。


span 元素就隐藏到 select  下面了。


此时也出现了一个问题


span 被 select 覆盖了 

解决方法就是 设置 select 的背景色为透明。

这样就可以显示到 span 了。

再把父元素的背景色设置为白色就可以了。


2.  使用koala软件 编译sass 不成功 ,提示:

在网上查找各种方法后,突然想到可能是有中文路径。

才会出现以上符号。改完后,果然可以编译了。

第二次吃了中文路径的亏。


收获:

【js 高级程序设计  第五章  】续:


Date 类型  (关于时间对象类型)

1.  创建 Date 实例。

now 自动获得当前日期。


2.根据特定的时间创建日期对象  (Date.parse() ; Date.UTC()  Date.now()


Date.parse()

Date.parse() 方法接收一个表示日期的字符串,如下列表。把这个字符串转换为代表日期的毫秒数传给 Date() 构造参数。


实例:



Date.UTC()


 Date.now()

Date.now() 方法返回代表调用这个方法时的时间的毫秒数。


3.日期格式方法



4. Date 还有很多方法。慢慢可能会用到。

     



RegExp 类型  (关于正则表达式的,看得有点吃力,暂时跳过)


Function 类型 

1.函数也是对象,函数是Function类型的实例。函数名是一个指针,指向函数。

  当函数名没有()时,函数名是一个指向函数的指针。


function sum(num1,num2){
    return num1+num2;
}
var z=sum;
sum=0;
z(1,1) //2
//z=sum,变量z 指向sum所代表的函数 .所以 sum 即使 后来 =0  也不会影响到z



2.为什么函数没有重载。

因为函数名是一个指针,函数改变时,只是为函数名赋予新的函数。


function sum(num1){
    return num1;
}
function sum(num1,num2){
    return num1+num2;
}

//第二个函数会覆盖第一个函数。所以javascript的函数没有重载。



3.函数表达式和函数声明的区别。


函数表达式
var sum=function(num1,num2){
      return num1+num2;
};

记得加上分号。跟一般变量赋值一样


函数声明式
function sum(num1,num2){

     return num1+num;}


从功能上两个没有任务区别。唯一的区别是当代码被解析器解析时  函数声明式有一个提高的功能,就是先被解析,不用等代码一行行解析。被提升到源代码树的顶端。


用一个代码来展示:

alert(sum(num1,num2));
function sum(num1,num2){
    return num1+num2;
}
//代码正常被执行,无须按行解析。会先解析函数声明式。




4.函数可以作为值。也可以当函数的参数。

function sum1(num1){ return num1};
function sum2(sum1){ alert(sum1(10));};

函数sum2把sum1当作参数。



5.Array.sort() 函数
 sort()函数如果没有参数,则按照它默认的方式进行比较,先把数组元素转换为字符串,tostring 然后按字符串首个字符 的字符编码进行排序。
sort()函数如果有参数, 一般传入一个比较函数,有两个参数。,函数返回一个数值,如果这个数值是一个正数,说明元素1大于元素2,在元素2后面。

6.函数内部属性。
(1)比如arguments,一个类数组的对象,代表函数参数的集合。第一个参数为arguments[0]
它有一个属性,arguments.callee指向函数。这个属性可以减少耦合。
比如递归函数。
function factorial(num){
    var s=1;
    if (num<=1) {
        return s;
    }else{
        return s=num * arguments.callee(num-1);
    }
}

减少耦合,增强代码的合理性。


(2)this

this引用的是函数据以执行的环境对象。


window.color="red";
var o={color:"blue"};
function sayColor(){
    return (this.color);
}
//console.log(sayColor());  //输出red 也就是this指向的是window
o.sayColor=sayColor;

console.log(o.sayColor()); //输出blue  this指向了o



(3)caller
调用当前函数的函数的引用。在全局环境中调用caller为null。
function inner(){
    outner();
}
function outner(){
    alert(arguments.callee.caller);
}
inner();

输出inner()函数的源码。


7.函数属性和 一些方法。
length属性代表函数接收了多少个参数。
prototype  对于引用类型而言,prototype是保存所有实例方法的真正所在。
apply() 和call() 主要作用是用来指定执行环境。扩充作用域。对象与任何方法不需要有耦合。
他们两个的区别就是apply传入的参数可以是argument call是一定要传入具体参数。
window.color="red";
var o={color:"blue"};
function sayColor(){
    alert(this.color);
}
sayColor.call(this);
sayColor.call(window);
sayColor.call(o);//显示blue
bind() 这个方法会创建一个函数的实例。
window.color="red";
var o={color:"blue"};
function sayColor(){
    alert(this.color);
}
var objectSayColor=sayColor.bind(o);

objectSayColor();


三个返回代码的方法:toString() toLocaleString() valueof()
1.参数是函数的局部变量,argument是函数参数的类数组。
2.基本类型和引用类型值传递的区别。
基本类型是值传递,引用类型是引用传递。但函数参数都是值传递。
num1=5;
num2=num1;
num1和num2都等于5,但它们都是独立存在的。
如果是引用类型。
var sum=function(){};
var sum2=sum;
sum和sum2的指针都指向函数。
var person=new Object();
function f1(person){
     var obj=person;
     obj.name="a";
     obj=new Object();
     obj.name="b";
}
//person.name="a";
3.typeof   检测函数时,显示为function 。
   instanceof;
4.没有块级作用链。
if(true)
{
   var i=1;
}
alert(i);//1




返回列表 返回列表
评论

    分享到