04-初学JavaScript

经过周末的消沉还是要继续学习代码的,不过今天可是备受打击,闲话少说继续整理

DOM操作

通常,通过 JavaScript,您需要操作 HTML 元素。

为了达成此目的,您需要首先找到这些元素。有好几种完成此任务的方法:

  • 通过 id 查找 HTML 元素
  • 通过标签名查找 HTML 元素
  • 通过类名查找 HTML 元素
  • 通过 CSS 选择器查找 HTML 元素
  • 通过 HTML 对象集合查找 HTML 元素
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    DOM:只要针对节点(元素)进行操作
    Dhtml
    dynamic:动态的
 <div  style="width: 100px;height: 100px;background: red" class="d">
     <p>放假!!!!!!!</p>
     <div style="width: 100px;height: 100px;background: blue">
     </div>
 </div>
    <div  style="width: 100px;height: 100px;background: yellow" class="d">

    </div>
    <script>
        文档对象
        var d1= document.getElementById('d1');
        console.log(d1);
        d1.innerText='这是重点';
        d1.innerHTML = '<h1>这是超级重点</h>';
        console.log(d1.innerHTML);
        var divs = document.getElementsByTagName('div');
        console.log(divs[1]);
        var divs = document.getElementsByClassName('d');
        console.log(divs[1]);
    </script>
</body>
</html>

 通过这三种方法获取表单元素

其中tagname 和classname都是数组 只有id是一个元素 因为id只能有一个

二、

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="d1">
        <a href="" id="a">这是一个链接</a>
        <button onclick="f()">设置属性按钮</button>
        <button onclick="f1()">查看属性</button>
    </div>

<script>
    var d1 = document.getElementById('d1');
    console.log(d1.getElementsByTagName('a')[0]);
    //设置属性值
    function f(){
        a.href='01-Dhtml.html';
        a.target='_blank';
        a.title='这是一个链接';
    }
    //显示属性值
    function f1(){
        console.log(a.href);
        console.log(a.target);
        console.log(a.title);
    }

</script>
</body>
</html>

 通过获取的元素设置属性值

三、按钮的提交

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="01-Dhtml.html" method="get">
        <input type="text" name="username" placeholder="请输入用户名">
        <span style="color: #ff0000"></span>
        <br>
<!--        <input type="submit" value="提交">-->
    </form>
    <button>按钮</button>
<script>
    var i = document.getElementsByName('username')[0];
    var btn = document.getElementsByTagName('button')[0];
    var span = document.getElementsByTagName('span')[0]
    i .onblur = function (){
        console.log(i.value);
        span.innerText='liunengenng'
    }
    i.onfocus = function (){
        span.innerText=''
    }
</script>
</body>
</html>

 这有两种方式 一是通过button提交拦截 二是通过from拦截 form onsubmit 返回true\false 一定要加return

from没有写而是自己想的 最后查的资料

四、通过获取元素 改变属性值 来实现全选和全不选

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<fieldset>
    <legend>爱好</legend>
    全选<input type="checkbox" id="all"/><br>
    睡觉<input type="checkbox" name="hobby"/>
    吃饭<input type="checkbox" name="hobby" />
    玩游戏<input type="checkbox" name="hobby"/>
</fieldset>
<script>
    var check = document.getElementsByName('hobby');
    document.getElementById('all').onclick = function (){
        for (var i = 0; i <check.length; i++) {
            check[i].checked = document.getElementById('all').checked;
        }
    }

    for (var i = 0; i <check.length; i++) {
        check[i].onclick = function() {
            for (var j = 0; j < check.length; j++) {
                if (check[j].checked) {
                    document.getElementById('all').checked = true;
                } else {
                    document.getElementById('all').checked = false;
                }
            }
        }
    }
    //
    // function f(){
    //     var temp= 0;
    //     for (var j = 0; j <check.length; j++) {
    //
    //         if(check[j].checked){
    //             temp++;
    //         }
    //     }
    //
    //     if(temp == 3){
    //         document.getElementById('all').checked=true;
    //     }else{
    //         document.getElementById('all').checked=false;
    //     }
    // }
</script>
</body>
</html>

 由于这里忘记获取的是数组因此这里卡主了 通过 console.log 才找到哪里出了错误

五、改变css样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*.c1{
            width: 100px;
            height: 100px;
            background: yellow;
            margin: auto;
        }*/
        .c1{
            width: 100px;
            height: 100px;
            background:yellow;
            margin: auto;
        }
        .c2{
            border-radius: 50px;
            box-shadow: 10px 10px 10px 10px red;
        }

    </style>
</head>
<body>
<!--一个元素是可以写多个类名,但是id名只能有一个-->
<div  id="d1"> 1223</div>
<script>
var d1 = document.getElementById('d1');
d1.className='c1 c2'
</script>
</body>
</html>

 这里一定要记住classname 要想两个样式都实现 必须写在一个里 如d1.className='c1 c2'

六、自定义属性 通过按钮改变字体大小

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="d1">
123
    </div>
<button id="d2">按钮1</button>
<button id="d3">按钮2</button>
<button id="d4">按钮3</button>
    <script>
        var d1 = document.getElementById('d1');
        var btn = document.getElementsByTagName('button');
        for (var i = 0; i <btn.length; i++) {
            btn[i].setAttribute('btn','b'+(i+1));
            btn[i].onclick=function (){
                if ('b1'== this.getAttribute('btn')){
                    d1.style.fontSize='12px';
                }
               if ('b2' == this.getAttribute('btn')){
                    d1.style.fontSize='16px';
                }
               if(this.getAttribute('btn'=='b3')){
                    d1.style.fontSize='32px';
                }
            }
        }

    </script>
</body>
</html>

 一开始想着点击 一个按钮可以改变一个样式 但是好像想简单了 所以这里有加了自定义属性 ,可以通过setAttribute自定义属性 通过getAttribute获取属性

七、用自定义属性来实现折叠菜单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0px;
            padding: 0px;
        }
        div{
            width: 600px;
            height: 600px;
            border: 1px solid red;
            margin: auto;


        }
        ul{
            list-style:none ;
            display: none;
        }
        p{
            width: 200px;
            height: 50px;
            text-align: center;
            line-height: 50px;
            font-size: 20px;
            background: grey;
            color: deepskyblue;
            cursor: pointer;

        }

    </style>
</head>
<body>
<div id="d1">
    <p>衣服</p>
    <ul>
        <li>阿迪</li>
        <li>耐克</li>
        <li>乔丹</li>
        <li>李宁</li>
    </ul>
    <p>图书</p>
    <ul>
        <li>阿迪1</li>
        <li>耐克2</li>
        <li>乔丹3</li>
        <li>李宁4</li>
    </ul>
    <p>美食</p>
    <ul>
        <li>阿迪987</li>
        <li>耐克345</li>
        <li>乔丹123</li>
        <li>李宁12345</li>
    </ul>
    <p>学校</p>
    <ul>
        <li>阿迪987</li>
        <li>耐克345</li>
        <li>乔丹123</li>
        <li>李宁12345</li>
    </ul>
</div>
<script>
    var d1 = document.getElementById('d1');
    var ps = document.getElementsByTagName('p');
    var uls = document.getElementsByTagName('ul');

    for (var i = 0; i <ps.length; i++) {
        ps[i].setAttribute('pid',i);
        ps[i].onclick = function (){
            var pid = this.getAttribute('pid');
            var curul = uls[pid];

            if(curul.style.display=='block'){
                curul.style.display='none';
            }else{
                for (var i = 0; i <ps.length; i++) {
                    uls[i].style.display='none';
                }
                curul.style.display='block';
            }
        }
    }
</script>
</body>
</html>

 这里的逻辑我用了许久才明白 尤其是else里的循环 判断是如果是关的就执行else操作 循环看其他列表 如果他们是开的就关掉 这样就是实现了 点开一个 关掉其他的列表

八、事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--    事件:事件是网页检测到的行为-->
<!--事件:事件源+事件类型+事件处理-->
<!--    事件绑定函数的方式-->
<!--方式一在元素内部写事件,在事件注册函数-->
    <button onclick="f()">按钮1</button>
<script>
    // function f(){
    //     alert(123);
    // }
    // // 方式二:获取元素对象。事件 = 匿名函数
    // document.getElementsByTagName('button')[0].onmouseenter = function (){
    //     alert(456);
    // }
    // 方式三(借用事件监听函数):第一个参数为事件名,第二个为要调用的函数名
    document.getElementsByTagName('button')[0].addEventListener("mousedown", m)
    function m(){
        alert(789)
    }
</script>
</body>
</html>

 事件的三种第二种用的比较多 第三种是特定情况的话才会使用

九、利用 鼠标和键盘做了 一个结合事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="d1" style="width: 10px;height: 10px;border-radius:50px;background: red">

</div>
<script>
window.onload = function (e){
    document.onmousedown = function (e){
        var a = e.clientX;
        var b = e.clientY;

        document.getElementById('d1').style.marginLeft = a+'px';
        document.getElementById('d1').style.marginTop = b+'px';
        document.getElementById('d1').style.transition = 'all 1s'
    }

}
</script>
</body>
</html>

 实现用鼠标对小球进行移动

之后就是作业了

一个是实现 摁下回车 按钮开始倒计时,计时结束 才可以点击按钮

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="button" disabled="disabled">
<script >
   var btn = document.getElementsByTagName('input')[0]
   var i= 3;
   btn.value=i;
   var t;
   window.onload = function (e){
       document.onkeydown = function (e){
           if(e.keyCode == 13){
              t = setInterval(f,1000)
           }
       }
       function f(){
           --i
           btn.value=i;
           if(i == 0){
               console.log(123);
               clearInterval(t)
               btn.value='新年快乐'
               btn.disabled=false;
           }

       }
   }
</script>


</body>
</html>

 第二个作业是 判断输入框里的文字个数 实时反映到界面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="d1">
    还可以输入100个数
</div>
<input type="text" style="height: 200px">
<script>
    window.onload = function (e){
        document.onkeydown = function (){
            var i=100;
            var d1 = document.getElementById('d1')
            var t1 = document.getElementsByTagName('input')[0]
            var a;
           i=i - t1.value.length;

            d1.innerText='还可以输入'+i+'个字符';

        }
    }


</script>
</body>
</html>

 ok 万事大吉!!

posted @ 2020-12-07 21:13  小刘真的在努力学代码  阅读(70)  评论(0)    收藏  举报