关于DOM

先说几个例题

  • 20-100之间十个不重复的随机数

  • var arr=[];
    for(var i=0;i<10;i++){
    	var x=Mati.floor(Manth.randow()*(100-20)+20);//这就是产生20-100的随机整数 
        if(arr.indexOf(x)==-1){
        	arr.push(x);
        }else{
        	i--;                   
        }
    }
    console.log(arr);
    
  • 数组去重

  • var arr=[1,1,2,2,3,4,666,2,1];
    var newarr=[];
    for(var i=0;i<arr.length;i++){
    	if(newarr.indexOf(arr[i])==-1){
        	newarr.push(arr[i])                  
        }                               
    }
    console.log(newarr);
    
  • 随机验证码

  • var str='1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
    for(var i=0;i<sp.length;i++){
    	sp[i].innerHTML=str.charAt(Math.floor(Math.random() * str.length));
    }
    
  • 手动实现reverse

  • var arr=[1,3,4,'dd','??','戒烟',33,'不会'];
    var newarr=[];
    for(var i=0;i<arr.length;i++){
    	newarr.unshift(arr[i]);
    }    
    console.log(newarr);
    
  • 图片从大到小排序,图片随机排序

  • <body>
        <div id="box">
            <div>
                <img src="./image/1.jpg" alt="">
                <p>图片<i>1</i></p>
            </div>
            <div>
                <img src="./image/2.jpg" alt="">
                <p>图片<i>2</i></p>
            </div>
            <div>
                <img src="./image/3.jpg" alt="">
                <p>图片<i>3</i></p>
            </div>
            <div>
                <img src="./image/4.jpg" alt="">
                <p>图片<i>4</i></p>
            </div>
            <div>
                <img src="./image/5.jpg" alt="">
                <p>图片<i>5</i></p>
            </div>
            <div>
                <img src="./image/6.jpg" alt="">
                <p>图片<i>6</i></p>
            </div>
            <div>
                <img src="./image/7.jpg" alt="">
                <p>图片<i>7</i></p>
            </div>
            <div>
                <img src="./image/8.jpg" alt="">
                <p>图片<i>8</i></p>
            </div>
            <button>图片从大到小排序</button>
            <button>图片随机排序</button>
        </div>
        <script>
            var box = document.getElementById('box');
            var divv = box.querySelectorAll('div');
            var ii = document.querySelectorAll('i');
            var imgs = document.querySelectorAll('img');
            var btn = document.querySelectorAll('button');
            console.log(imgs);
            var arr = [];
            for (var i = 0; i < ii.length; i++) {
                arr.push(ii[i].innerHTML);
            }
            console.log(arr);//把图片名字写进了数组
            var newarr = [];
            for (var i = 0; i < arr.length; i++) {
                newarr.unshift(arr[i]);
            }
            console.log(newarr);
            // newarr.push('0'); 
            // console.log(newarr); 
            // 从大往小排
            btn[0].onclick = function () {
                for (i = 0; i < 8; i++) {
                    imgs[i].src = './image/' + Number(newarr[i]) + '.jpg'
                    ii[i].innerHTML = Number(newarr[i]);
                    newarr.reverse();//点击一次以后数组返翻转就变成了从小到大,在点击按钮就可以从小到大排序了
                }
            }
            //随机排序
            btn[1].onclick = function () {
                var x=[];
                var y=[];
                for(var i=0;i<8;i++){
                if(y.indexOf(x[i]=Math.floor(Math.random() * (9-1)+1))==-1){
                    y.push(x[i]);
                }else{
                    i--;
                }
            }
                console.log(y);
                for (i = 0; i < 8; i++) {
                    imgs[i].src = './image/' + y[i] + '.jpg'
                    ii[i].innerHTML = y[i];
                }
            }
        </script>
    </body>
    //以上是自己写的
    //老师上课讲的
    <head>
        <style>
        自己定义样式,有时间再写吧
        </style>
    </head>
    <body>
        <div class=box>
            <button>从大到小</button>
            <button>随机排序</button>
            <div class=demo>
                <p>
                    <img src='./image/1.jpg'>
                    <span>图片1</span>
                </p>
                <p>
                    <img src='./image/1.jpg'>
                    <span>图片2</span>
                </p>
                <p>
                    <img src='./image/1.jpg'>
                    <span>图片3</span>
                </p>
                <p>
                    <img src='./image/1.jpg'>
                    <span>图片4</span>
                </p>
                <p>
                    <img src='./image/1.jpg'>
                    <span>图片5</span>
                </p>
                <p>
                    <img src='./image/1.jpg'>
                    <span>图片6</span>
                </p><p>
                    <img src='./image/1.jpg'>
                    <span>图片7</span>
                </p>
                <p>
                    <img src='./image/1.jpg'>
                    <span>图片8</span>
                </p>
            </div>
        </div>
        <script>
        	var btn=document.querySelectorAll('button');
            var p=document.querySelectorAll('p');
            var arr=[];
            var arr1=[];
            for(var i=0;i<p.length;i++){
                arr.push(p[i].innerHTML);
                arr1.push(p[i].innerHTML);
            }
            btn[0].onclick=function(){
                arr.reverse();//反转
                for(var i=0;i<p.length;i++){
    				p[i].innerHTML=arr[i];
                }
            }
            btn[1].onclick=function(){
                var arr2=[];
                for(var i=0;j<p.length;i++){
                    var x=Math.floor(Math.random()*p.length);
                    if(arr2.indexOf(x)==-1){
                        arr2.push(x);
                    }else{
                        i--;
                    }
                }
                for(var i=0;i<p.length;i++){
                    p[i].innerHTML=arr1[arr2[i]];
                }            
            }
        </script>
    </body>
    
  • 结束

DOM,文档对象模型

节点

获取子节点

<body>
    <div id=“demo”>
        灵魂三问
        <!-- 别问我 -->
        <ul style="position:revative">
            <li class="my">毕业了吗</li>
            <li class="mm">工作了吗</li>
            <li>有对象了吗</li>
        </ul>
    </div>
    <script>
    	var demo=document.getElementById('demo');
        var my=document.getElementById('my');
        var mm=document.getElementById('mm');
        //子节点,包含注释,标签,换行,文本
        console.log(demo.childNodes);
        //子元素节点,只有标签,而且出来的是标签的数量
        console.log(demo.childElementCount);
        //父节点
        console.log(my.parentNode);//ul
        //找到有定位的父节点,如果没有就找body
        console.log(my.offsetParent);
        //找第一个子节点,包括文本,标签,换行,注释
        console.log(demo.firstChild);
        //找第一个子元素节点
        console.log(demo.firstElementChild);
        //最后一个节点
        console.log(demo.lastChild);
        //找最后一个子元素节点
        console.log(demo.lastElementChild);
        //兄弟节点
        //兄节点,在上
        console.log(mm.previousSibling);//找到的是换行
        console.log(mm.previousElementSibling);//找到的是元素
        //弟节点,在下
        console.log(mm.nextSibling);//找到的是换行
        console.log(mm.nextElementSibling);//找到的是元素
    </script>
</body>

#text,换行;comment是空格

<body>
    <div id=“demo”>
        灵魂三问
        <!-- 别问我 -->
        <ul style="position:revative">
            <li class="my">毕业了吗</li>
            <li class="mm">工作了吗</li>
            <li>有对象了吗</li>
        </ul>
    </div>
    <script>
    	var demo=document.getElementById('demo');
        var my=document.getElementById('my');
        console.log(my.nextSibling);
        console.log(my.nextElementSibling);
        //上面是会有兼容问题的,解决办法如下
        var nextS=my.nextElementSibling||my.nextSibling
        //------------------------------------
        console.log(demo.children);
        console.log(demo.childNodes);
        //nodeType:1 ,找到的是标签
        //nodeType:3 ,找到的是文本
        //nodeType:8 ,找到的是注释
        //nodeValue:是啥写啥
        //nodeName:#text/comment
    </script>
</body>

操作节点***重点

创建节点
//创建标签节点
var oli= document.createElement('li');
//创建文本节点
var txt= document.createTextNode('没有');
(往后)添加节点:appendChile(),只能添加你创建的节点,不可以直接添加标签
my.parentElement.appendChile(oli);
//首先找到父元素my.parentElement
//然后添加appendChile(oli);
//在父元素后面追加
oli.appendChile(txt);

(往前)添加节点:insterBefore(新创建的节点,参照的节点)
my.parentElement.insterBefore(oli,my);

删除节点:remove()
demo.remove();//删除整个
元素.remove();//删除某个元素
my.parentElement.removeChild(my);//删除某个子元素

替换节点:replaceChild(新的,旧的)
my.parentElement.replaceChile(oli,my)

复制(克隆)节点:cloneNode(true||false),默认false
my.cloneNode(true);
false:就是克隆空的标签
true:就是克隆所有的

查找节点
document.getElementById()
document.getElementsByClassName()
document.getElementsByTagName()
document.querySelector()
document.querySelectorAll()

获取元素的属性值:getAttribut()
demo=document.getElementById('demo');
console.log(demo.id);
console.log(demo.className);
//获取元素自定义属性:
demo.tag='123';
consloe.log(dome.tag);
//获取元素自定义属性另一种方法:
console.log(demo.getAttribut('tag'));

设置元素的属性值:setAttribut(要修改或添加的属性,新的属性值)
console.log(demo.setAttribut('tag','123'));

ToDoList

<body>
	<div>
        <input type="text" id="inp">
        <button>添加</button>
    </div>
    <div>
    	<h1>正在完成</h1>
        <ul id='ing'></ul>
        <h1>已经完成</h1>
        <ul id='ed'></ul>
    </div>
    <script>
    	var inp
        var ing
        var ed
        var btn
        btn.onclick=function(){
            add();
            check();
        }
        function add(){
            var txt=inp.value;
            var oli=document.createElement('li');
            oli.innerHTML='<input type="checbox">'+txt+'<span>-</span>'
            ing.insertBefor(oli,ing.firstChild);
            //ing.appendChild(oli)
            inp.value='';
            var ingli=ing.querySelectorAll('li');
            for(i=0;i<ingli.length;i++){
                ingli[i].querySelector('span').onclick=function(){
                    this.parentElement.remove();
                }
            }
        }
    </script>
</body>
...

表格操作

获取表格元素
<body>
	<table>
        <thead></thead>
        <tbody></tbody>
        <tfooter></tfooter>
    </table>
    <script>
        
    	console.log()
    </script>
</body>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值