JavaScript

1. for in 和 for of

(1) for in 用于数组

var arr = [1,2,3];
for(var k in arr){
    console.log(k);       
    console.log(arr[k]);
}

// 输出结果:
0 
1 
1 
2 
2 
3 

// k 表示数组索引号, arr[k] 表示数组元素

(2) for in 用于对象

var obj = {
    name: 'sam',
    age: 1,
    sex: '男',
    fun: function(){
    }
}
for(var k in obj){
    console.log(k);
    console.log(obj[k]);  // 这里不能用obj.k  这样会直接查找obj对象里面的k属性
}

//输出结果:
name
sam
age
1
sex
男
fun
[Function: fun]

// k 表示对象的属性名,obj[k]表示对象的属性值

(3) for of 用于数组

var arr = [1,2,3];
for(var k of arr){
    console.log(k);       
    console.log(arr[k]);
}
// 输出结果:
1
2
2
3
3
undefined

// k 表示数组中的元素

(4) for of不能用于对象,因为TypeError: obj is not iterable(对象是不可迭代的)

2. 给单击之后的按钮添加背景颜色

<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script>
    // 1. 获取所有按钮元素
    var btns = document.getElementsByTagName('button');
    // btns 得到的是伪数组 里面的每一个元素 btns[i]
    for(var i = 0;i<btns.length;i++){
        btns[i].onclick = function(){
        // (1)我们先把所有的按钮背景颜色去掉
        for(var i = 0 ;i<btns.length;i++){
        btns[i].style.backgroundColor = '';
     }
    // (2)然后才让当前的元素换背景颜色
    // 这里是this
    this.style.backgroundColor = 'pink';
    }
}
</script>

3. 全选与取消全选

<div class="wrap">
    <table>
        <thead>
            <tr>
                <th>
                    <input type="checkbox" id="j_cbAll"/>
                </th>
                <th>商品</th>
                <th>价格</th>
            </tr>
        </thead>
        <tbody id="j_tb">
            <tr>
                <td>
                    <input type="checkbox"/>
                </td>
                <td>iphone8</td>
                <td>800</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox"/>
                </td>
                <td>iphone8</td>
                <td>800</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox"/>
                </td>
                <td>iphone8</td>
                <td>800</td>
            </tr> 
            <tr>
                <td>
                    <input type="checkbox"/>
                </td>
                <td>iphone8</td>
                <td>800</td>
            </tr>
        </tbody>
    </table>
</div>
<script>
    // 1.全选和取消全选做法: 让下面所有复选框的checked属性(选中状态)跟随全选按钮即可
    // 获取元素
    var j_cbAll = document.getElementById('j_cbAll');     // 全选按钮
    var j_tbs = document.getElementById('j_tb').getElementsByTagName('input'); 
// 下面所有的复选框
    // 注册事件
    j_cbAll.onclick = function(){
        // this.checked;      // 可以得到当前复选框的选中状态,
    如果是true 就是选中,
    如果是false 就是未选中
        for(var i = 0 ;i<j_tbs.length;i++){
            j_tbs[i].checked = this.checked;     
            // 全选与取消全选
        }
    }

    // 2.下面复选框需要全部选中,上面全选才能选中做法:
    给下面所有复选框绑定点击事件,
    每次点击,都要循环检查这四个小按钮是否全部被选中
    for(var i = 0 ; i<j_tbs.length;i++){
        j_tbs[i].onclick = function(){
            //flag      控制全选按钮是否选中
            var flag = true;
            // 每次点击下面的复选框都要循环检查这四个小按钮是否全部被选中
            for(var i = 0;i<j_tbs.length;i++){
                if(!j_tbs[i].checked){
                    flag = false;
                    break;    // 退出for循环 提高执行效率  
                    因为只要有一个没有选中 剩下的就无需循环
                }
            }
            j_cbAll.checked = flag;
        }
    }
</script>

4. tab栏切换

<style>
    .tab_list li{
        float: left;
        height: 39px;
        line-height: 39px;
        padding: 0 20px;
        text-align: center;
        cursor: pointer;
    }
    .tab_list::after{
        content: '';
        clear: both;
        display: block;
    }
    .current{
        background-color: #c81623;
        color: #fff;
    }
    .item_info{
        padding: 20px 0 0 20px;
    }
    .item{
        display: none;
    }
</style>
<div class="tab">
    <div class="tab_list">
        <ul>
            <li class="current">商品介绍</li>
            <li>规格与包装</li>
            <li>售后保障</li>
            <li>商品评价</li>
            <li>手机社区</li>
        </ul>
    </div>
    <div class="tab_con">
        <div class="item" style="display: block;">
            商品介绍模块
        </div>
        <div class="item">
            规格与包装模块
        </div>
        <div class="item">
            售后保障模块
        </div>
        <div class="item">
            商品评价模块
        </div>
        <div class="item">
            手机社区装模块
        </div>
    </div>
</div>
<script>
    // 1. 上面的模块选项卡,点击某一个,当前这一个底色会是红色,
其余不变(排他思想)修改类名的方式
    // 获取元素
    var tab_list = document.querySelector('.tab_list');
    var lis = tab_list.querySelectorAll('li');
    var items = document.querySelectorAll('.item');
    // for循环 绑定点击事件
    for(var i = 0 ; i<lis.length; i++){
        // 开始给 五个 li 设置索引号
        lis[i].setAttribute('index',i);
        lis[i].onclick = function(){
            // 干掉所有人  其余的li清除class 这个类
            for(var i = 0;i<lis.length;i++){
                lis[i].className = '';
            }
            // 留下我自己
            this.className = 'current';
            // 2. 下面的显示内容模块
            var index = this.getAttribute('index');
            // 干掉所有人 让其余的item 这些div 隐藏
            for(var i = 0;i<items.length;i++){
                items[i].style.display = 'none';
            }
            // 留下我自己  让对应的item 显示出来
            items[index].style.display = 'block';
        }
    }
</script>

5. 创建元素,添加文本,添加元素,删除元素

// (1)创建元素
var li = document.createElement('li'); 
// (2)给li添加文本
li.innerHTML = text.value;
// (3)添加元素
// ul.appendChild(li);
ul.insertBefore(li,ul.children[0]);
// (4)删除元素
ul.removeChild(ul.children[0]);

6. tab栏切换

    var tab_list = document.querySelector('.tab_list');
    var lis = tab_list.querySelectorAll('li');
    var items = document.querySelectorAll('.item');
    // for循环 绑定点击事件
    for(var i = 0 ; i<lis.length; i++){
        // 开始给 五个 li 设置索引号
        lis[i].setAttribute('index',i);
        lis[i].onclick = function(){
            // 干掉所有人  其余的li清除class 这个类
            for(var i = 0;i<lis.length;i++){
                lis[i].className = '';
            }
            // 留下我自己
            this.className = 'current';
            // 2. 下面的显示内容模块
            var index = this.getAttribute('index');
            // 干掉所有人 让其余的item 这些div 隐藏
            for(var i = 0;i<items.length;i++){
                items[i].style.display = 'none';
            }
            // 留下我自己  让对应的item 显示出来
            items[index].style.display = 'block';
        }
    }

7. 获取URL中的参数,并进行格式化

console.log(location.search);    // ?username=andy
// 1.先去掉?  利用substr('起始位置',截取几个字符)     截取字符串
var params = location.search.substr(1);
console.log(params);       // username=andy
// 2.利用'='把字符串分割为数组 split('=');
var arr = params.split('=');
console.log(arr);           // [ "username", "andy" ]
var div = document.querySelector('div');
// 3.把数据写入div中
div.innerHTML = arr[1] + '欢迎你';

8. 箭头函数保存this

<div id="ad"></div>
  <script>
    let ad = document.getElementById('ad');

     ad.addEventListener('click',function(){
      let _this = this;
      setTimeout(function(){
        _this.style.background = 'pink'; 
        // this.style.backgroundColor = 'pink';   // 这里的this 指向window
     },2000)
    })
  </script>


// 使用箭头函数
  <script>
    let ad = document.getElementById('ad');
    ad.addEventListener('click',function(){
       setTimeout(() => {
        this.style.background = 'pink';
      },2000)
    })
  </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值