JS之BOM、DOM

  一、BOM对象

  1,window对象

  所有浏览器都支持window对象,从概念上讲:一个HTML文档对应一个window对象,从功能上讲:控制浏览器窗口的,从使用上讲:window对象不需要创建对象,直接使用即可

  2,window对象方法

alert()            显示带有一段消息和一个确认按钮的警告框。
confirm()          显示带有一段消息以及确认按钮和取消按钮的对话框。
prompt()           显示可提示用户输入的对话框。

open()             打开一个新的浏览器窗口或查找一个已命名的窗口。
close()            关闭浏览器窗口。

setInterval()      按照指定的周期(以毫秒计)来调用函数或计算表达式。
clearInterval()    取消由 setInterval() 设置的 timeout。
setTimeout()       在指定的毫秒数后调用函数或计算表达式。
clearTimeout()     取消由 setTimeout() 方法设置的 timeout。
scrollTo()         把内容滚动到指定的坐标。

  3,方法的使用

  3.1弹窗方法,警告窗alert、确认窗confirm、输入窗prompt

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function waring() {
            alert(‘小心点‘)
        }
        function certain() {
            var status=confirm(‘确定跳转?‘);
            if (status){
                location.href=‘http://www.baidu.com‘;
        }
        }
        function shuru() {
            var content=prompt(‘请输入‘);
            console.log(content)
        }
    </script>
</head>
<body>
    <button onclick="waring()">警告窗</button>
    <button onclick="certain()">确认窗</button>
    <button onclick="shuru()">输入窗</button>
</body>
</html>

  3.2 setinterval:间隔指定的毫秒数不停的执行指定的代码、clearInterval:停止方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function gettime() {
            let now=new Date().toLocaleString();
            let ss=document.getElementById(‘content‘);
            ss.value=now;
        }
        var id;
        function settime() {
            if (id==undefined){
                gettime();
                id=setInterval(gettime,1000);    #每1000毫秒(即1秒)后执行
            }
        }
        function over() {
            clearInterval(id);
            id=undefined
        }
    </script>
</head>
<body>
    <input type="text" id="content">
    <button onclick="settime()">start</button>
    <button onclick="over()">end</button>
</body>
</html>

  3.3 settimeout():在指定的毫秒数后执行代码,cleartimeout():停止

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <button onclick="set()">执行</button>
    <button onclick="cle()">停止</button>
    <p id="p1">欢迎光临</p>
    <script>
        var id;
        function set(){
            id=setTimeout(function () {
           document.getElementById(‘p1‘).innerHTML=‘谢谢‘
        },3000)
        }
        function cle() {
            clearTimeout(id)
        }
    </script>
</body>
</html>

  二、DOM对象

  HTML document object model(文档对象模型)

  1,DOM树,展示文档中各个对象的关系,用于导航

  2,节点关系

  3,节点查找方法

  3.1 直接查找

document.getElementById();   #通过id查找,得到是一个准确标签
document.getElementsByClassName();      #通过类查找,不管同一类有几个标签,得到都是由同一类标签组成的数组
document.getElementsByTagName();        #通过标签名查找,不管同一种标签有几个,得到的都是由同一种标签组成的数组
document.getElementsByName();      #通过name属性查找,返回的是同一name值的标签组成的数组注意:涉及寻找元素,注意<script>的位置,写在被查找标签后面

  3.2 导航查找

‘‘‘

parentElement           // 父节点标签元素

children                // 所有子标签

firstElementChild       // 第一个子标签元素

lastElementChild        // 最后一个子标签元素

nextElementtSibling     // 下一个兄弟标签元素

previousElementSibling  // 上一个兄弟标签元素

‘‘‘注意:是没法直接找到所有的兄弟标签

  4,节点操作

  4.1 文本操作:innerHTML,innerText

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div class="c1"><a href="#">欢迎来电</a></div>
    <script>
        var t1=document.getElementsByClassName(‘c1‘)[0].innerHTML;
        var t2=document.getElementsByClassName(‘c1‘)[0].innerText;
        console.log(t1);
        console.log(t2);
    </script>
</body>
</html>innerHTML拿到的是对应标签里包含的所有内容,包括标签,比如上面的例子拿到‘<a href="#">欢迎来电</a>’innerText拿到的只是内容,没有标签,比如上面的例子就只拿到‘欢迎来电’,而没有a标签

  4.2 属性操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1{
            background-color: yellow;
        }
        .c2{
            color: white;
        }
        .c3{
            font-size: 30px;
        }
    </style>
</head>
<body>
    <div id="d1">你好啊</div>
    <button onclick="set1()">加背景</button>
    <button onclick="set2()">加背景,字体颜色,字体大小</button>
    <button onclick="rem1()">去掉class属性</button>
    <button onclick="get1()">拿到class属性</button>
    <script>
        var ele=document.getElementById(‘d1‘);
        function set1(){
            ele.setAttribute(‘class‘,‘c1‘)        #给标签设置属性,第一个参数为属性名,第二参数为属性值
        }
        function set2() {
            ele.setAttribute(‘class‘,‘c1 c2 c3‘)
        }
        function rem1() {
            ele.removeAttribute(‘class‘)         #把标签的某个属性给删除,参数为属性名
        }
        function get1() {
            var va=ele.getAttribute(‘class‘);        #拿到标签的某个属性值,参数为属性名
            console.log(va)
        }
    </script>
</body>
</html>

  4.3 class属性操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            background-color: grey;
            color: yellow;
            font-size: 20px;
            margin-bottom: 5px;
        }
        ul{
            list-style: none;
        }
        .hh{
            display: none;
        }
    </style>
</head>
<body>
    <div class="c1">菜单一</div>
    <ul class="hh">
        <li>111</li>
        <li>111</li>
        <li>111</li>
    </ul>
    <div class="c1">菜单二</div>
    <ul class="hh">
        <li>222</li>
        <li>222</li>
        <li>222</li>
    </ul>
    <div class="c1">菜单三</div>
    <ul class="hh">
        <li>333</li>
        <li>333</li>
        <li>333</li>
    </ul>
    <script>
        var eles=document.getElementsByClassName(‘c1‘);
        for ( var i=0;i<eles.length;i++){
            eles[i].onclick=function () {
                for (var j=0;j<eles.length;j++){
                    if (eles[j]!=this){
                        eles[j].nextElementSibling.classList.add(‘hh‘)     #在标签的class属性列表里加‘hh类’。若已经存在,就不用添加
                    }
                }
                this.nextElementSibling.classList.remove(‘hh‘)          #把标签的class属性列表里删除‘hh类’,若不存在,就不用删除
            }
        }

  4.4 改变css样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p id="p1">这是一个寂寞的天,下着有些伤心的雨</p>
</body>
    <script>
        document.getElementById(‘p1‘).style.color=‘red‘;
        document.getElementById(‘p1‘).style.fontSize=‘30px‘;
    </script>
</html>注意:对于中间用—连接的属性,在这里中间的—给去掉。比如font—size写成fontSize,后面的单词首字母大写

  4.5 value操作

对于input,select,textarea标签来说,可以.value获取到value值

原文地址:https://www.cnblogs.com/12345huangchun/p/10171146.html

时间: 2024-10-07 00:27:11

JS之BOM、DOM的相关文章

JS 之 Bom/Dom/节点

一.什么是BOM? 浏览器对象模型 二.BOM中的顶级对象是什么? window 三.window下有哪些子对象? document location history navigator frames screen 四.如何实现跳转页面? window.location location.href 五.如何刷新页面? location.reload([true]) history.go(0) 六.window下方法 1. alert() : 警告框 2. confirm() : 选择框 3. p

JS之BOM和DOM(来源、方法、内容、应用)

1.Javascript组成 JavaScript的实现包括以下3个部分: 1)核心(ECMAScript):描述了JS的语法和基本对象. 2)文档对象模型 (DOM):处理网页内容的方法和接口 3)浏览器对象模型(BOM):与浏览器交互的方法和接口 ECMAScript扩展知识: ① ECMAScript是一个标准,JS只是它的一个实现,其他实现包括ActionScript. ② "ECMAScript可以为不同种类的宿主环境提供核心的脚本编程能力--",即ECMAScript不与具

用PHP代替JS玩转DOM

事情的起源比较简单,我需要把一个导航页的数据整理好写入数据库.一个比较直观的方法是对html文件进行分析,通用的方法是用php的正则表达式来匹配.但是这样做开发和维护都很困难,代码可读性非常差. 导航页的数据都是规则的排列在DOM树当中的,用JS可以用几个循环轻松的对其进行操作,而且JS需要依赖浏览器,操作数据库很困难.其实PHP就有现成的类库对DOM树种的节点进行增删改查操作,在此做一些笔记. 这里涉及到2个类 DOMDocument 和 DOMXPath. 其实思路比较明确,就是通过DOMD

读JS高性能总结——DOM编程(一)

DOM是一个与语言无关的API,它在浏览器中的借口却是用JS来实现的. 浏览器通常会把DOM和JS独立实现. 在IE中,JS的实现名是JScript,位于jscript.dll文件中,DOM实现则是mshtml.dll: Safari中的DOM和渲染则使用webkit中的WebCore来实现,JS则是有独立的JavaScriptCore引擎来实现: Google浏览器,同样使用webkit中的WebCore来渲染页面,但JS引擎则是由V8来实现: Firefox中的JS引擎名为SpiderMon

JS/jQuery判断DOM节点是否存在

JS原生判断DOM节点是否存在页面中 JavaScript原生函数没有提供判断DOM节点是否存在方法,我们通常获取DOM节点几乎都是document.getElement..方法,会返回一个object数组合集,我们可以通过object[0],object[1]这样来访问这个合集的每一个对象.既然返回的是数组合集,那么就有length属性,而length大于等于1即表示DOM节点存在页面中 代码: Object.prototype.exist = function(){ if(typeof th

【原生js】js动态添加dom,如何绑定事件

首先要明白浏览器在加载页面的时候是按顺序来加载的,这样以来就很清楚了,js动态添加dom以后,这些dom并没有绑定事件,这个时候最简单的一个办法就是:将绑定事件的方法封装到一个函数A中,在动态添加完dom以后立即执行一次函数A即可. 需要注意的是,在你可能同事需要添加许多的dom,不要添加一个就执行一次函数A,这样会增加浏览器的负载,你需要在所有dom添加完以后在执行函数A,例如你用一个for循环遍历dom组合并拼接成一个字符串,然后添加到某个父级dom里面,这个时候你需要在循环外添加一次就可以

JavaScript基础16——js的BOM对象

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>js的BOM对象</title> 6 <script type="text/javascript"> 7 // BOM:Broswer Object Model 浏览器对象模型 8 /* 9 navifator 获取客户端(浏览器)的信息 10

JS的三种使用方式/CSS的三种使用方式/JS中的DOM事件模型/JS中匿名函数的书写及调用/媒体查询@media的三种使用方式

一.JS的三种使用方式 1.html标签中内嵌JS(不提倡使用.)                <button onclick="javascript:alert('你真点啊.')" > 有本事点我呀!!!!</button>                                2.HTML页面中直接使用JS:                <script type="text/javascript">        

原生js 的一些DOM/样式操作

写在前面的话: 一直写的jquery,原生的不用--写篇东西帮助自己整理记忆一下吧 ,虽然都很基础啊-- 1.js找dom对象,以及创建/删除 节点 一贯的jquery操作:$(selector) 原生的写法(列一些常用的): document.getElementsByClassName(selector) document.getElementsByTagName(selector) document.getElementById(selector)document.querySelecto

通过js添加的DOM节点的click事件绑定不上的解决方案以及IOS下click事件委派失效的解决方案

问题描述: 如以下代码所示,通过js添加的Dom节点,在其上绑定点击事件,有的时候会出现点击事件不响应的情况,按照正常的理解,js代码具有阻塞性,Dom节点添加成功之后,就可以找到该节点并绑定事件,没有道理会出现事件绑定不上的问题,但是这种情况的确是遇到了多次,问题原因有待日后深入理解,下面记载一下问题的解决方案. 解决方案: 方案一:将事件绑定直接写在行内标签上"<thead onclick='myFunction(this)' >",其中,this代表的是当前元素,是一