前端-3

Caesar's Tesla
一、
正常文档流:
将元素(标签)在进行拍版布局的时候按着从上到下,从左到右进行排版
脱离文档流:将元素从文档流里边拿出,取出之后进行覆盖,其他元素会按文档流中不存在该元素重新进行布局
float(浮动):非完全脱离
position(定位):完全脱离absolute fixed

二、position
默认为static,无特殊定位,对象遵循正常文档流

定位在右下角
a{
    positon:fixed;
    bottom:20px;
    right:20px;
}


position:fix,absolute;
        :absolute 
        :relative相对定位,根据自己之前的位置进行移动,原来的位置还占着,并没有脱离文档流

margin:0 auto;居中

JavaScript

实际上,一个完成的JavaScript实现是由以下3个不同部分组成的:

  • 核心(ECMAScript)
  • 文档对象模型(DOM)Document object model(整合js,css,html)
  • 浏览器对象模型(BOM)Broswer object model(整合js和浏览器)
  • JavaScript在开发中绝大多数情况是基于对象的,也是面向对象的

JavaScript的引入方式

1、导入文件

2、直接编写

........



3、

JavaScript基础

  • 变量
定义变量,一行可以创建多个变量,类型也可以不同
var a = 1, b = 3;

命名规则:建议使用匈牙利类型标记法
var iMyValue = 0,sMyValue = 'hello';
  • 函数
function sayHello(){
    var sHelloStr = "你好"
    document.write(sHelloStr);
}

sayHello();
  • 数据类型
    • 基本数据类型
      • Number
      • String
      • Boolean
      • Null
      • Underfined
    • 引用数据类型
      • object
堆内存:引用
栈内存:对象

1、Number

Number 包括整型和浮点型
16进制和8进制数的表达:
    16进制数据前面加上0X,八进制前面加0
    16进制数是由0-9,A-F等16个字符组成
    8进制数由0-7等8个数字组成

2、 字符串

是由Unicode字符、数字、标点符号组成的序列

3、Boolean

true false

4、Underfined

如果声明了一个变量,但是并未对其进行赋值,则该变量是Underfined

5、null

//null:占一个对象的位置
var obj = null

数据类型的转换

1+true ->2
1+false->1
true对应的是1
false对应的是0
"hello"+true -> "hellotrue"

强制类型转换函数

parseInt:强制转换成整数
parseFloat:强制转换成浮点数
eval:将字符串强制转换为表达式并返回结果
parseInt("a2.12");//NaN当字符串转换为数字失败的时候就是NaN
NaN==0  -> false
NaN>0   -> false
NaN<0   -> false
NaN==NaN   -> false
NaN在表达式中,一定结果为false,除了不等于

typeof

var i = 10;
var s = "hello";
var b = false;
var u = underfined;
var n = null;
var obj = new object();
console.log(typeof(i));

ECMAScript运算符

ECMAScript算术运算符

x=-y 负号
var a = 1;
var b = a++;//a+=1; 先赋值,再操作
var c = ++a; //先操作(加减),后赋值

var x = 1;
x++; 1
++x; 3
--x; 2
x--; 2

一元加减法

var a = "3";
b = +a;
b = -a;

ECMAScript逻辑运算符

等于(==)、不等于(!=)、大于等于(>=)
与(&&)、或(||)、非(!)

如果一个运算数是

==print(True and 3)== 3

ECMAScript赋值运算符

2=="2" true 
2==="2" false

2!="2" false
2!=="2" true

"25"<"3" true 比较的是2和3的ascii码
"25"<3 false 将"25"转成了数字

1、比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型
2、比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位想等,继续取第二位比较

控制语句

if语句

对象

obj = {"1":"111","2":[1,2]}
console.log(obj) //[object Object]

for (var i in obj):
    i;//这里的i是key
    obj[i];//取值

函数创建方式1 ---建议使用

function func1(){
    return 8
}

var ret = func1()

函数创建方式2

var fun2 = new Function("参数1","参数n","函数体");

面试题

Uncaught TypeError: a is not a function


arguments对象

var ret = 0
function add(){
    arguments//传进来的参数组成的数组
    for(var i in arguments){
        ret += arguments
    }
    return ret;
}
add(1,2,3,4);


//对所传的参数的个数进行要求,不符合的话,就报错
function func2(){
    if(arguments.length!=3){
        throw new Error("param should be 3")
    }
}
func(1,2,3,4)

匿名函数

var func3 = function(){
    alert(1234)
}

func3()

//自执行函数
(function(arg){
    console.log(arg);
})("123")

函数的属性和方法

length 参数的个数

fun.length

instanceof

var n = new Number(2);
n instanceof String ->false

String对象

//创建方式一
var s = "hello"
//创建方式一
var s2 = new String("hello")

//String对象的属性length
s.length -> 5

//遍历字符串
for (var i in s){console.log(s[i])}

//格式编排方法
s.italics(); 斜体
s.bold(); 粗体
s.anchor("alex");

//大小写转换
s.toUpperCase()
s.toLowerCase()

//获取指定字符
s.charAt(1) 根据索引取值

s.charCodeAt(1) 获取索引对应的ASCII码值


//查询字符串match()、search()
s.search("l") //返回的第一个匹配结果的索引值
s.match("l")//返回数组,包含所有的匹配结果

s.indexOf('l')//获取字符所在的索引值
s.lastIndexOf('l')//获取字符所在的最后的索引值

//替换
s = "wojiushimudy"
s1 = s.replace("u","U");

//分割
s.split("E")

//拼接
s.concat(" world")

//字符串截取
s.substr(1,2)//从1的位置开始截取3的长度
s.substring(1,3)//索引位置1-3的字符串
s.slice(1,3)//同上,但是允许负数(表示倒数)


数组

//创建方式一
var arr = [1,2,3,4,5]
//创建方式二
var arr2 = new Array(1,"2",[3,4],true)
var arr3 = new Array();//初始化一个空数组
var arr4 = new Array(3);//如果采用初始对象方式创建数组,当里边只有一个数字的时候,那么数字表示的是长度而不是内容

//二维数组
var arr2 = new Array(5,'heee',true,[1,2,3])
arr[3][2]

//数组对象的方法
s1 = "hello"
s2 = "world"
[s1,s2].join("+") //"hello+world"
将数组内的字符串拼接成一个字符串

//push pop shift unshift  --
队列:先进先出 栈:先进后出
push pop 是向后操作的
shift unshift是向前操作的
 

py中的join()

s1 = "hello"
s2 = "world"
s = " ".join([s1,s2])
print(s)

注意排序的时候,并不是按照大小排序的
arr1 = [1,5,3,7,2,100]
arr1.sort()
[1, 100, 2, 3, 5, 7]

自定义排序

function mysort(a,b){
    return a-b;
}
类别 方法 说明
获取子数组 slice(start,end) 通过数组元素起始和结束索引号获取子数组
splice(start,deleCount,value,...) 对数组指定位置进行删除和插入
进出栈操作 push(value,...) 数组末端入栈操作
pop() 数组末端出栈操作
unshift(value,...) 数组首端入栈操作
shift() 数组首端出栈操作
连接数组 join(bystr) 返回由bystr连接数组元素组成的字符串
toString() 返回由逗号(,)连接数组元素组成的字符串
concat(value,...) 返回添加参数中元素后的数组
数组排序 reverse() 返回反向的数组
sort() 返回排序后的数组

JS中数组的特性

js中的数组可以装任意类型,没有任何限制
js中的数组,长度是随着下标变化的,用到多长就有多长

date对象

//创建方式1:
var date_object = new Date();
date_object.toLocaleString()
//创建方式2:
var date_object2 = new Date("2016/2/3 12:00);
//创建方式3:
var date_object3 = new Date(3000303003);

date_object.getFullYear()
date_object.getMonth()
date_object.getDate()
date_object.getDay()

正则对象

//创建方式1
var re_obj = new RegExp("\d+","g")//g :全局 i:不区分大小写
//创建方式2
var re_obj2 = /\d+/g;

var s = "hello";
s.match(/l/g);//取出所有匹配的内容放到数组
s.search(/l/g);//匹配出来的第一个结果的所引值

Math

Math.random()//0-1的随机数
Math.round(2.3)//四舍五入
Math.pow(2,4)
Math.max()

BOM对象(浏览器对象模型)

window

window对象方法
// alert confirm prompt
var ret = confirm("内容是否保存!")//返回的是true false
var ret = prompt("输入您的名字")//返回值是输入的内容


计时器









history对象

history内部三种方法:
history.forward() 浏览器的前进后退的功能
history.back()
history.length()

location对象

刷新本页面的作用


DOM下的对象分类

json与xml都是进行数据交换的




    
    Title


hello div

文档树

graph TD
A[document-html]-->B[element-head]
A-->C[element-body]
B-->D[element-title]
D-->E[text-Title]
C-->F[element-div]
F-->G[element-div]
G-->H[Text-hello div]
  • 导航属性
    • parentNode-节点(元素)的父节点(推荐)
    • firstChild-节点下第一个子元素
    • lastChild-节点下最后一个子元素
    • childNodes-节点(元素)的子节点
    • nextSibling-兄弟节点

只用了parentNode
firstChild不会使用,因为它会把两行之间的内容算进去

//根据id获取到标签
var ele = document.getElementById("")
ele.nodelName()//DIV
ele.nodelValue()

推荐用法

parentElement               // 父节点标签元素
children                    // 所有子标签
firstElementChild           // 第一个子标签元素
lastElementChild            // 最后一个子标签元素
nextElementSibling         // 下一个兄弟标签元素
previousElementSibling      // 上一个兄弟标签元素

寻找对象方式

//通过ID
var temp = document.getElementById("div1");

//通过class
var ele = document.getElementsByClassName("dvi2")[0];
var ele2 = ele.nextElementSibling;
ele2.innerHTML;//获取标签中的文本内容

//通过tag
var tag = document.getElementsByTagName("p")
tag[0].innerHTML

//通过Name属性
var name = document.getElementsByName("alex");


//局部查找可以通过TagName class
var ele3 = ele.getElementsByTagName("p")

//局部查找不可以通过ID Name

事件

onfocus 与 onblur


pppp

//为什么不能通过函数调用的方式 //获得焦点与失去焦点

做一个placeholder


pppp

onkeydown onkeyup onkeypress



function fun1(e){
        console.log(e.keyCode)
    }

onload页面加载完成之后会调用这个方法


    

与mouse相关的事件触发

onmousedown、onmousemove、onmouseover、onmouseout

onsubmit事件

onsubmit必须绑定在form上


也可以这么绑定


增删改查掩饰

增
createElement(name)创建元素
appendChild();将元素添加

删
获得要删除的元素
获得它的父元素
使用removeChild()方法删除

修改样式

我是共产主义接班人
如果已经有样式了的话,那么可以使用下边的这种 Title
我是共产主义接班人

添加图片


this

huhuhuhuh

省市二级联动








左右移动



    
    Title
    







js思考题 -改成匿名函数就行了



你可能感兴趣的:(前端-3)