BOM&DOM

BOM

Browser Object Model 浏览器对象模型,于浏览器对话.

window对象

所有浏览器支持window对象.

调用window对象和属性时,可以省略window对象的引用.

window.document.write() 可以简写成 document.write()

常用方法:

  • window.innerHeight -- 浏览器窗口的内部高度
  • window.innerWidth -- 浏览器窗口的内部宽度
  • window.open() -- 打开新窗口
  • window.close() -- 关闭当前窗口

弹出框

警告框

需要用户点击确定按钮才能继续操作.

alert("see it?")

确认框

需要用户点击去确定或者取消按钮才能继续操作.

confirn("are you sure?")

提示框

需要用户输入某个值,然后点击确认或者取消按钮才能继续操作.

prompt("enter under there","your answer")

计时相关

setTimeout()

var t= setTimeout("js statements",ms)

jsstatements js语句

ms毫秒

clearTimeout()

clearTimeout(t)

setInterval()

设置周期性执行的值,不停息执行

setInterval("JS statements",ms)

clearInterval()

clearInterval(t)

DOM

Document Object Model 文档对象模型,可以访问HTML文档的所有元素.

用来对文档的内容进行抽象和概念化.

当网页被加载时,浏览器会创建页面的文档对象模型.

HTML DOM 树

HTML DOM 模型被构造为对象的树.

DOM标注规定HTML文档中每个成分都是一个节点(node):

查找标签

直接查找
document.getElementById           根据ID获取一个标签
document.getElementsByClassName   根据class属性获取,生成一个数组,取[0]
document.getElementsByTagName     根据标签名获取标签合集,生成一个数组,取[0]

注意:

js代码尽量放在body的最下面

间接查找
parentElement            父节点标签元素
children                 所有子标签
firstElementChild        第一个子标签元素
lastElementChild         最后一个子标签元素
nextElementSibling       下一个兄弟标签元素
previousElementSibling   上一个兄弟标签元素

节点操作

创建节点
var divEle = document.createElement("div");
其中内置属性可以直接动过`.`的方式直接添加
添加节点

追加一个子节点(作为最后的子节点)

somenode.appendChild(newnode);

把增加的节点放到某个节点的前边。

somenode.insertBefore(newnode,某个节点)

aEle.innerText = "check me "   //添加内部文本
divEle.insertBefore(aEle,pEle)  //指定位置添加元素
删除节点

获得要删除的元素,通过父元素调用该方法删除。

somenode.removeChild(要删除的节点)

替换节点

somenode.replaceChild(newnode, 某个节点);

属性节点

获取节点值


var divEle = document.getElementById("d1")
divEle.innerText
divEle.innerHTML

设置文本节点值

var divEle = document.getElementById("d1")
divEle.innerText="1"
divEle.innerHTML="<p>2</p>"
指定CSS操作

obj.style.backgroundColor="red"

JS操作CSS属性的规律:

1.对于没有中横线的CSS属性一般直接使用style.属性名即可。如:

obj.style.margin
obj.style.width
obj.style.left
obj.style.position

2.对含有中横线的CSS属性,将中横线后面的第一个字母换成大写即可。如:

obj.style.marginTop
obj.style.borderLeftWidth
obj.style.zIndex
obj.style.fontFamily

事件

当达到某个状态的时候,自动触发某个动作或者响应.

常用事件

onclick        当用户点击某个对象时调用的事件句柄。
ondblclick     当用户双击某个对象时调用的事件句柄。

onfocus        元素获得焦点。               // 练习:输入框
onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)

onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。
onload         一张页面或一幅图像完成加载。
onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。

onselect      在文本框中的文本被选中时发生。
onsubmit      确认按钮被点击,使用的对象是form。

事件的绑定过程中,thisi相当于python中的self

练习:

//显示时间
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="text" id = "d1">
<button id = 'b1'>start</button>
<button id = 'b2'>end</button>

<script>
    var t = null;
    var b1Ele = document.getElementById('b1');
    var b2Ele = document.getElementById('b2');
    var iEle = document.getElementById('d1');

    function showTime() {
        var currentTime = new Date();
        var ctime = currentTime.toLocaleString()
        iEle.value =ctime


    }
    b1Ele.onclick = function () {
        if(!t){
            t = setInterval(showTime,1000)

        }

    };

    b2Ele.onclick = function () {
        clearInterval(t);
        t = null

    }

</script>
</body>
</html>
//闪光灯
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1 {
            height: 400px;
            width: 400px;
            border-radius: 50%;
        }
        .bg_green {
            background-color: green;

        }
        .bg_red {
            background-color: red;
        }


    </style>
</head>
<body>
<div class="c1 bg_green bg_red"></div>
<button id = "d1">bianse</button>


<script>
    let btnEle = document.getElementById('d1');
    btnEle.onclick = function () {
        // 找到div标签
        var divEle = document.getElementsByClassName('c1')[0];
        // 修改类属性 有在删除 无则添加
        divEle.classList.toggle('bg_red')
    }


</script>
</body>
</html>
//聚焦变化
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="text" value="linux" id="d1">

<script>
    var iEle = document.getElementById('d1');
    iEle.onfocus = function () {
        iEle.value = ''

    }

    iEle.onblur = function () {
        iEle.value = 'next time'
    }
</script>
</body>
</html>
//省市区
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<select name="" id="d1">sheng</select>

<select name="" id="d2">shi</select>

<script>
    var s1Ele = document.getElementById('d1');
    var s2Ele = document.getElementById('d2');

    var data = {
        "河北省": ["廊坊", "邯郸",'石家庄'],
        "北京": ["朝阳区", "海淀区",'昌平区'],
        "山东": ["威海市", "烟台市",'青岛'],
        "上海":["静安区",'黄浦区','徐汇区']
    };

    for (let province in data){
        var optEle = document.createElement('option');
        optEle.innerText = province;
        optEle.value = province;

        s1Ele.appendChild(optEle)
    }

    s1Ele.onchange = function () {
        var currentPro = this.value;
        var cityList = data[currentPro];

        s2Ele.innerHTML = ''

        for (let i=0;i<cityList.length;i++){
            var optEle = document.createElement('option');
            optEle.innerText = cityList[i];
            optEle.value = cityList[i]
            s2Ele.appendChild(optEle)
        }

    }
</script>
</body>
</html>
posted @ 2019-11-18 21:08  Agsol  阅读(117)  评论(0编辑  收藏  举报