doraemon的python web前端DOM和BOM (js重点)

#### 11.8.3  BOM的系统对话框

bom的系统对话框:

- window.alert("liujia")   直接在页面中弹出对话框
- window.confirm("你确定要删除文件吗?")    弹出是否眼删除文件,并且有确定和取消按钮
- window.prompt("今天的天气是?")  会弹出对话框让你输入内容

定时器方法

```html
<script type='text/javascript'>
    //1.在5秒之后执行对应的操作,可以做异步
    window.setTimeout(function(){
        console.log("111");
    },2000)
    console.log("222")
    
    //2周期性定时器
    var num = 0;
    var timer = null;
    //开启定时器
    timer = window.setInterval(function{
                               num++;
                               if(num === 0){
        clearInterval(timer);  //清除定时器
    }
                      console.log(num); },2000)
</script>
```

#### 11.8.4 DOM 

D:docunment文档

O:object

M;modle

获取节点的是三种方法:

- var box = document.getElementById("box")   通过id获取单个节点对象
- var box = document.getElementsByTagName('div')  通过标签名来获取节点对象
- var lis2 = document.getElementsByClassName("active"); 通过类名来过去

对样式的操作:

1 获取事件源对象

- var box = document.getElementById('box'):

2.绑定事件并执行更改

- box.onmpuseover = function(){box.style.backgroundColor = 'red'}

对属性的操作:

1.获取事件的节点

- var p1 = document.getElementById('id');

2.设置属性

- console.log(p1.getAttribute('class'))   必须要获取属性
- p1.setAttribute('class',123)  如果原来存在class就对它进行更改,如果不存在就进行添加

节点的创建删除:

创建节点:

- var li1 = document.createElement('li')  创建节点
- li1.innerText = 'liujia'  在节点中添加内容,但只能设置文本
- li1,innerHTML = ‘<a href="#"></a>’;  可以设置html
- ll1.setAttribute("class","avtive");
- li1.children[0].style.color = 'red';

便利数据操作页面:

```html
<script>
    var box = document.getElementById('box');
    var date = [
        {id:1,name:'小米2',subname:"前置双摄",price:1999}
        {id:1,name:'小米4',subname:"前置双摄",price:2999}
        {id:1,name:'小米5',subname:"前置双摄",price:3999}
        {id:1,name:'小米6',subname:"前置双摄",price:4999}
        {id:1,name:'小米8',subname:"前置双摄",price:5999}
    ]
    for (var i=0;i<data.length;i++){
        var li = document.creatElement('li');
        li.innerHTML = `<p class='name'>${data[i].name}</p>
        <p class="subname">${data[i].subname}</p>
        <span class="sprice">${data[i].price]元<span>`
        box.appendChild(li )
    }
</script>
```

切换图片:

```html
<body>
    <div id = "box">
     <img src="images/1.jpg" alt="" id="imgbox">   
    </div>
    <button id = "prev">上一张</button> 
    <button id = "next">下一张</button>
</body>
<script>
    var imgbox = document.getElementById('imgbox');
    var next = document.getElementById('next');
    var prev = cocument.getElementById('prev');
    var num = 1;
    next.onclick = function(){
        nextImg();
    }
    function nextImg(){
        num++;
        if(num === 5){
            num = 1;
        }
        imgbox.src=`images/$[num}.jpg`;
    }
    setInterval(nextImg,100)
    prev.onclick=function(){
        prevImg();
    }
    function prevImg(){
        num = 5;
        num -= 1;
        if(num === 0){
            num=5
        }
        imbox.src=`images/${num}.jpg`
    }
    setInterval(prevImg,100)
</script>
```

函数对象中,可以通过那两个方法改变函数内部this的指向

```html
function fn(){
    console.log(this);      //this指向了window
}
fn.call();
fn.apply();

```

如何设置节点对象的样式、属性、类?

```html
设置样式
obj.style
设置属性:
obj.setAttribute(name,value);
obj.getAttribute(name);
obj.className
obj.title
```

节点对象的创建,添加,删除分别用什么方法?

```html
var op = document.creatElement('p');
box.appendChild(op);
box.insertBefore(newNode,oldNode);
box.removeChild(op);
```

l列出你所知道的js事件?

- onclick
- onmouseover
- onmouseout
- onchange
- onselect
- onsubmit
- onload

定时的方法有那两个?写出对应的方法,并说明含义?

setTimeout(callback,毫秒)一次性任务,延迟操作,异步

setInterval(callback,毫秒)周期性循环任务 动画 css transtion tranform
原文地址:https://www.cnblogs.com/doraemon548542/p/11535491.html