我爱编程

js基础day03

2018-04-02  本文已影响34人  codeTao

js基础day03

一.综合练习

1.换肤效果封装

2.图片切换

2.1 使用事件

    pic.onmouseover = function () {
        //注意:标签自己的属性可以使用点语法直接获取
        pic.src = "images/22.jpg";
    };

2.2 prompt() 显示可提示用户进行输入的对话框

2.3 如何学习函数

3.美女竞价

3.1 点击按钮逻辑判断

1.是否输入内容
2.转换为数字类型,判断输入的值是否是数值
3.判断输入的数值是不是小于1000, 小于1000弹窗提示
4.如果数值大于1000, 修改h2内容
5.第二次输入数值,判断当前输入的数值,是否比上次输入数值大,如果小于上次的数值弹窗提示
6.如果第二次输入数值比上次大,更新h2文本内容

3.2 isNaN(x) 用于检查其参数是否是非数字值

二.window.onload

2.1window :所有浏览器都支持 window 对象。它表示浏览器窗口。

2.2 onload 事件: 某个页面或图像被完成加载, 就会响应onload事件

三.变量提升

同一个作用域下,只要声明一个变量,变量的声明会被提升到该作用域最上边

<script>
    //结论:同一个作用域下,只要声明一个变量,变量的声明会被提升到该作用域最上边
    var a;
    alert(a); //结果:undefined 变量只是声明, 没有赋值
    a = 11; //全局变量

    //变量提升:
    //函数内声明一个变量,变量声明会被提升到函数最上边,但是变量赋值没有发生改变
    function fn() {
        var b;
        alert(b); //undefined 变量只是声明, 没有赋值
        b = 22; //局部变量
    }
    //函数调用
    fn(); 
</script>

四.取整函数

4.1 parseInt()

1.数字取整

var a = 123.456789;
var b = parseInt(a);
console.log(b , typeof b);

2.字符串取整

var c = '123.456789';
var d = parseInt(c);
console.log(d, typeof d);
var e = '123.456789px222';
var f = parseInt(e);
console.log(f,  typeof f); //123, number
var e = 'px222';
var f = parseInt(e);
console.log(f );  //NaN

4.2 parseFloat()

parseFloat() 截取字符串中小数

var ee = '123.456789px222';
var ff = parseFloat(ee);
console.log(ff, typeof ff);//123.456789 , number

4.3 toFixed(x)

toFixed(x) 保留x位小数

var a = 123.456789;
var num = a.toFixed(2);
//注意:toFixed(x) 以字符串格式,返回保留的x位小数
console.log(num, typeof num); // 123.46  string
num = num * 1;
var e = '123.456789px222';
var num2 = e.toFixed(2);
console.log(num2); 

五.数据类型转换

1.数字转字符串

var a = 3.1415926;
//方法一:
var str = a + '';
console.log(str, typeof str);

//方法二:
var str2 = String(a);
console.log(str2, typeof str2);

2.字符串转数字

var b = '12345';
//方法一:
var num = b * 1;
console.log(num, typeof num);

//方法二:
var num2 = Number(b);
console.log(num2, typeof num2);

3.其他类型转换为布尔

var a = 3.1415926;
var b = '12345';
//验证非0即真
//数字转布尔
var c = Boolean(a);
console.log(c, typeof c); //true

//字符串
console.log(Boolean(b)); //true

//0是false
console.log(Boolean(0));//false

//undefined
console.log(Boolean(undefined)); //false

//空字符串
console.log(Boolean('')); //false

//null
console.log(Boolean(null)); //false

六.Math函数库

Math函数库,提供一些属性和函数,让我们进行数学运算

Math 对象属性

console.log(Math.PI);
console.log(Math.SQRT2);

Math 对象方法

console.log(Math.abs(2));  //2
console.log(Math.abs(-11)); //11
var a = Math.sin(30 * Math.PI/180);
console.log(a); //数字精度丢失
var b = Math.cos(60 *Math.PI/180);
console.log(b); 
var num = 3.1415;
console.log(Math.ceil(num)); //4
console.log(Math.floor(num)); //3
console.log(Math.max(2, 5)); //5
console.log(Math.min(2, 5)); //2
console.log(Math.pow(2, 3)); //2的3次方
console.log(Math.random());
console.log(Math.round(3.14));  //3
console.log(Math.round(3.55)); //4
console.log(Math.sqrt(3)); //3的平方根
//Math.sqrt(3) * 0.5 -> cos(30度)

七.js引入方式

css 引入方式优先级 行内式 > 内嵌式 > 外链式

js引入方式有以下几种:

1.页内式导入js

<script>
    //js页内式
    //1.获取box
    var box = document.getElementById('box');
    //2.设置box
    box.style.width = '200px';
    box.style.height = '200px';
    box.style.backgroundColor = 'blue';
</script>

2. window.onload导入js

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //js 页内式
        window.onload = function () {
            //1.获取box
            var box = document.getElementById('box');
            //2.设置box
            box.style.width = '300px';
            box.style.height = '300px';
            box.style.backgroundColor = 'green';
        }
    </script>
</head>

3.外链式导入js

<script src="09-index.js"></script>
//09-index.js 
//1.获取box
var box = document.getElementById('box');
//2.设置box
box.style.width = '400px';
box.style.height = '400px';
box.style.backgroundColor = 'yellow';

总结:js引入方式没有优先级,最后都是要转化为行内式对元素进行设置。
所以,只有最后一次设置才起作用,后面的设置会覆盖前边的属性设置

八.认识数组

直接实例化
var arr = new Array(99, 88, 77, 66);
console.log(arr);
var arr2 = [99, 88, 77, 66];
var index1 = arr2[1];
console.log(index1);
arr2[2] = 44;
console.log(arr2);
console.log(arr2.length);
console.log(arr2[9]);
 for(var i = 0;i < arr2.length;i++){
     console.log(i);
     console.log(arr2[i]);
 }
var arr3 = [33, 'sk666', undefined, null, true];
console.log(arr3);

九.隔行变色

9.png

十.全选反选不选

<div id="box">
    <button>全选</button>
    <button>不选</button>
    <button>反选</button>
</div>

<div id="inputBox">
    <input type="checkbox" >
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
    <input type="checkbox">
</div>
10.png

十一.排他思想

11.png
//第一个按钮
    btnList[0].onclick = function () {
        //btnList[0].className = 'current';
        for(var i = 0; i<btnList.length; i++){
            //先清空所有按钮className
            btnList[i].className = '';
        }
        //再对当前响应事件按钮,单独设置
        btnList[0].className = 'current';
    }

//封装给按钮添加事件功能
    function btnClick(obj) {
        obj.onclick = function () {
            //btnList[0].className = 'current';
            for(var i = 0; i < btnList.length; i++){
                //先清空所有按钮className
                btnList[i].className = '';
            }
          //再对当前响应事件按钮,单独设置
          obj.className = 'current';
        }
    }
    //2.添加事件
    btnClick(btnList[0]);
    btnClick(btnList[1]);
    btnClick(btnList[2]);
    btnClick(btnList[3]);
    btnClick(btnList[4]);
    for(var i = 0; i<btnList.length; i++){
        btnClick(btnList[i]);
    }
    
   /* btnClick(btnList[0]);
    btnClick(btnList[1]);
    btnClick(btnList[2]);
    btnClick(btnList[3]);
    btnClick(btnList[4]);*/
    for(var i = 0; i<btnList.length; i++){
        //btnClick(btnList[i]);
        //获取每一个button
        var btn = btnList[i];

        btn.onclick = function () {
            for(var i = 0; i < btnList.length; i++){
                //先清空所有按钮className
                btnList[i].className = '';
            }
            //再对当前响应事件按钮,单独设置
            //btn.className = 'current';

            //console.log(btn);
            //console.log(i);

            //this 代表被点击按钮
            console.log(this);
            this.className = 'current';
        }
    }

十二.隔行变色-光标移动

 <style>
        ul{
            list-style: none;
        }
        .current{
            background-color: yellow!important;
        }
    </style>
//3.遍历数组, 给每个li设置背景色
    for(var i = 0;i < list.length; i++ ){
        //3.1 获取每个li
        var oli = list[i];
        //3.2设置背景色
        oli.style.backgroundColor = (i % 2 == 0) ? 'red':'blue'

        //3.3 给每个li添加事件
        //排他思想:只显示响应事件的那个li为黄色
        oli.onmouseover = function () {
            //alert(111);
            //只有最后一个li显示黄色
            //oli.className = 'current';
            
            //先清空所有li
            for(var j = 0; j<list.length;j++){
                list[j].className = '';
            }
            //再单独设置响应事件的li
            //this 代指响应事件的li
            //注意:className 设置背景, 需要使用 !important 提升页内式优先级
            this.className = 'current'
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读