JS 篇(3)

仿淘宝搜索框

这里写图片描述
这里写图片描述

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
    .search {
    width:300px;
    height: 30px;
    margin: 100px auto;
    position: relative;
    }
    .search input {
    width:200px;
    height:25px;
    }
    .search label {
    font-size: 12px;
    color:#ccc;
    position: absolute;
    top:8px;
    left:20px;
    /*此光标指示文本*/
    cursor: text;
    }
    </style>
    <script>
    window.onload = function(){
    function $(id){return document.getElementById(id);}
    //  oninput 大部分浏览器支持  检测用户表单输入内容
    //  onpropertychange ie678 检测用户表单输入内容
    //  事件是可以连等的btn.onclick=btn.onmouseover
    $("txt").oninput = $("txt").onpropertychange = function(){
    if(this.value ==""){
    $("message").style.display = "block";
    }
    else {                   
    $("message").style.display = "none";
    }
    }
    //$("txt").oninput = function(){
    //if(this.value ==""){
    //$("message").style.display = "block";
    //}
    //else {
    //$("message").style.display = "none";
    //}
    //}
    //$("txt").onpropertychange = function(){
    //if(this.value ==""){
    //$("message").style.display = "block";
    //}
    //else {
    //$("message").style.display = "none";
    //}
    //}
    }
    </script>
    </head>
    <body>
    <div class="search">
    <input type="text" id="txt"/>
    <!--想光标跳到谁身上就放谁的ID,当我们点击label的时候,光标回到input里面-->
    <label for="txt" id="message">必败的国际大牌</label>
    </div>
    </body>
    </html>
判断用户输入事件

正常浏览器支持 :oninput
Ie 678支持的 : onpropertychange


数组的遍历

    <script>
    var num = 10;
    var arr = [1,3,5,6,7];
    console.log(arr[3]);
    //        for(var i=0;i<arr.length;i++)
    //        {
    //            console.log(arr[i]);
    //        }
    for(var i=0,len=arr.length;i<len;i++)
    {
    console.log(arr[i]);
    }
    </script>

隔行变色

原图
这里写图片描述
鼠标经过变色(1)
这里写图片描述
鼠标经过变色(2)
这里写图片描述

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
    .box {
    width: 300px;
    }
    li {
    line-height: 30px;
    list-style-type: none;
    }
    li span {
    margin:5px;
    }
    .current{
    background-color: #ccc!important;
    }
    </style>
    <script>
    window.onload = function(){
    var lis = document.getElementsByTagName("li");
    for(var i=0;i<lis.length;i++){
    if(i%2==0)
    {
    lis[i].style.backgroundColor = "#eee";
    }
    //鼠标经过li的时候,当前的(this)底色变量
    lis[i].onmouseover = function(){
    //!!!!!一定是this不是lis[i],因为是当前鼠标在的这个li变色!!!!
    this.className = "current";
    }
    lis[i].onmouseout = function(){
    this.className="";
    }
    }
    }
    </script>
    </head>
    <body>
    <div class="box">
    <ul>
    <li>
    <span>上证指数</span><span>3641</span><span>10-5</span><span>0.16%</span>
    </li>
    <li>
    <span>上证指数</span><span>3641</span><span>10-5</span><span>0.16%</span>
    </li>
    <li>
    <span>上证指数</span><span>3641</span><span>10-5</span><span>0.16%</span>
    </li>
    <li>
    <span>上证指数</span><span>3641</span><span>10-5</span><span>0.16%</span>
    </li>
    <li>
    <span>上证指数</span><span>3641</span><span>10-5</span><span>0.16%</span>
    </li>
    <li>
    <span>上证指数</span><span>3641</span><span>10-5</span><span>0.16%</span>
    </li>
    <li>
    <span>上证指数</span><span>3641</span><span>10-5</span><span>0.16%</span>
    </li>
    <li>
    <span>上证指数</span><span>3641</span><span>10-5</span><span>0.16%</span>
    </li>
    <li>
    <span>上证指数</span><span>3641</span><span>10-5</span><span>0.16%</span>
    </li>
    <li>
    <span>上证指数</span><span>3641</span><span>10-5</span><span>0.16%</span>
    </li>
    </ul>
    </div>
    </body>
    </html>

鼠标经过颜色变深,但是已经有背景色的li未发生变化,因为之前的颜色写在行内式,权重是1000,.current权重是10,所以会被盖住(如图)
这里写图片描述
所以要提高current的权重+“!important”


求平均值

    <script>
    //    var arr = [1,2,3,4,5,6];
    //    var sum = 0;
    //    for(i=0,leg=arr.length;i<leg;i++){
    //        sum=sum+arr[i];
    //    }
    //    console.log(sum/arr.length)
    var arr= [10,20,30];
    function avg(array){
    var len = array.length;
    var sum = 0;
    for(var i=0; i<len;i++){
    sum+=array[i];
    }
    return sum/len;
    }
    console.log(avg(arr))
    </script>

遍历京东背景图片

这里写图片描述
图片位置坐标以及对应索引号依次为(0,0)->0;(0,-25)->1;(0,-50)->2;得到 坐标=(索引号*25)

在之前的京东网页上继续写JS:

    <script>
    var iis = document.getElementById("iconsprite").getElementsByTagName("i");
    alert(iis.length)
    for(var i=0;i<iis.length;i++){
    iis[i].style.backgroundPosition = "0 "+(-25*i)+"px";
    }
    </script>

如此,图片得到遍历:
这里写图片描述


字符相连

数值相加,字符相连

“0”+10 显示为010
10-“2” 显示为8
也就是说,加号会连,但是减乘除都是当做数字0运算
所有input取过来的值是字符型
将字符型转化成数值型:
var num = Number(txt.value);
var num = parseInt(txt.value);
引引加加:“50px”+i+”px”;
“你好“”+i+“吧”等同于 “你好1”+“吧”(i为任意数值)

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title></title>
    <script>
    //将js写在input的上面需要加window.onload,如果写在input下面,就不需要了,因为程序是从上向下执行
    window.onload = function(){
    var txt = document.getElementById("txt");
    //没有给button的id值,可以用数组写
    var btn = document.getElementsByTagName("button")[0];
    btn.onclick = function(){
    var num = Number(txt.value);
    alert(num+num);
    }
    }
    </script>
    </head>
    <body>
    <input type="text" id="txt">
    <button>点击</button>
    </body>
    </html>

全选和反选(!!重要!!)

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
    window.onload = function(){
    var btns = document.getElementsByTagName("button"); // 得到了所有的button
    var inputs = document.getElementById("bottom").getElementsByTagName("input");
    // bottom 里面的input
    /*     btns[0].onclick = function(){
    for(var i=0; i<inputs.length;i++)
    {
    inputs[i].checked = true;  // 选中表单
    }
    }
    btns[1].onclick = function(){
    for(var i=0;i<inputs.length;i++)
    {
    inputs[i].checked = false;
    }
    }
    btns[2].onclick = function(){
    for(var i=0;i<inputs.length;i++)
    {
    if(inputs[i].checked == true)
    {
    inputs[i].checked = false;
    }
    else
    {
    inputs[i].checked = true;
    }
    }
    }*/
    /*全选和取消 函数*/
    function all(flag){
    for(var i=0;i<inputs.length;i++)
    {
    inputs[i].checked = flag;
    }
    }
    btns[0].onclick = function(){
    all(true);
    };
    btns[1].onclick = function(){
    all(false);
    };
    btns[2].onclick = function(){
    for(var i=0;i<inputs.length;i++)
    {
    inputs[i].checked == true ?  inputs[i].checked = false : inputs[i].checked = true;
    }
    }
    }
    </script>
    </head>
    <body>
    <div id="top">
    <button>全选</button>
    <button>取消</button>
    <button>反选</button>
    </div>
    <div id="bottom">
    <ul>
    <li>选项: <input type="checkbox"/></li>
    <li>选项: <input type="checkbox"/></li>
    <li>选项: <input type="checkbox"/></li>
    <li>选项: <input type="checkbox"/></li>
    <li>选项: <input type="checkbox"/></li>
    <li>选项: <input type="checkbox"/></li>
    <li>选项: <input type="checkbox"/></li>
    <li>选项: <input type="checkbox"/></li>
    <li>选项: <input type="checkbox"/></li>
    </ul>
    </div>
    </body>
    </html>

排他思想&提出当前索引号

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
    .damao {
    background-color: pink;
    }
    </style>
    <script>
    window.onload = function(){
    var btns = document.getElementsByTagName("button");
    for(var i=0;i<btns.length;i++)
    {
    btns[i].index = i;  
    // 给每个button定义了一个index属性  索引号
    //如果直接写成index=i;则会出现undefined情况 
    btns[i].onclick = function(){
    //清除所有人的类名,只能用 for 遍历
    alert(this.index);
    for(var j=0;j<btns.length;j++)
    {
    btns[j].className = "";
    }
    //就剩下自己 就是一个 而且是点击那个
    this.className = "damao";
    }
    }
    }
    </script>
    </head>
    <body>
    <button>啦啦啦</button>
    <button>啦啦啦</button>
    <button>啦啦啦</button>
    <button>啦啦啦</button>
    <button>啦啦啦</button>
    <button>啦啦啦</button>
    </body>
    </html>

var index = 2;是变量,谁都可以用
arr.index = 2;是自定义属性,他只能在arr才能使用


Tab栏切换 ★

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
    .box {
    width: 400px;
    margin:100px auto;
    border:1px solid #ccc;
    }
    .bottom div{
    width:100%;
    height: 300px;
    background-color: pink;
    display: none;
    }
    .purple {
    background-color: purple;
    }
    </style>
    <script>
    window.onload = function(){
    var btns = document.getElementsByTagName("button");
    var divs = document.getElementById("divs").getElementsByTagName("div");
    for(var i=0;i<btns.length;i++)
    {
    btns[i].index = i;  // 难点
    btns[i].onclick = function(){
    //让所有的 btn 类名清空
    //alert(this.index);
    for(var j=0;j<btns.length;j++)
    {
    btns[j].className = "";
    }
    // 当前的那个按钮 的添加 类名
    this.className = "purple";
    //先隐藏下面所有的 div盒子
    for(var i=0;i<divs.length;i++)
    {
    divs[i].style.display = "none";
    }
    //留下中意的那个 跟点击的序号有关系的
    divs[this.index].style.display ="block";
    }
    }
    }
    </script>
    </head>
    <body>
    <div class="box">
    <div class="top">
    <button>第一个</button>
    <button>第二个</button>
    <button>第三个</button>
    <button>第四个</button>
    <button>第五个</button>
    </div>
    <div class="bottom" id="divs">
    <div style="display: block;">1好盒子</div>
    <div>2好盒子</div>
    <div>3好盒子</div>
    <div>4好盒子</div>
    <div>5好盒子</div>
    </div>
    </div>
    </body>
    </html>

改进后:

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
    .box {
    width: 400px;
    margin:100px auto;
    border:1px solid #ccc;
    }
    .bottom div{
    width:100%;
    height: 300px;
    background-color: pink;
    display: none;
    }
    .purple {
    background-color: purple;
    }
    .bottom .show {
    display: block;
    }
    </style>
    <script>
    window.onload = function(){
    var btns = document.getElementsByTagName("button");
    var divs = document.getElementById("divs").getElementsByTagName("div");
    for(var i= 0;i<btns.length;i++)
    {
    btns[i].index = i; 
    btns[i].onclick = function(){   
    for(var j=0;j<btns.length;j++)
    {
    btns[j].className = "";
    divs[j].className = "";
    }
    this.className = "purple";
    divs[this.index].className = "show";
    }
    }
    }
    </script>
    </head>
    <body>
    <div class="box">
    <div class="top">
    <button>第一个</button>
    <button>第二个</button>
    <button>第三个</button>
    <button>第四个</button>
    <button>第五个</button>
    </div>
    <div class="bottom" id="divs">
    <div class="show">1好盒子</div>
    <div>2好盒子</div>
    <div>3好盒子</div>
    <div>4好盒子</div>
    <div>5好盒子</div>
    </div>
    </div>
    </body>
    </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值