前端BOM、DOM

这篇具有很好参考价值的文章主要介绍了前端BOM、DOM。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

BOM操作

JavaScript分为 ECMAScript,DOM,BOM

BOM(Browser Object Model)是指浏览器对象模型,它使JavaScript有能力与浏览器进行对话

DOM(Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素。
前端BOM、DOM,前端

window对象

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

打开新的网址窗口
window.open('https://www.baidu.com/','','height=400px,width=400px,top=400px,left=400px')
解析内容:新建窗口打开页面 第二个参数写空即可 第三个参数写新建的窗口的大小和位置

navigator对象(了解即可)

浏览器对象,通过这个对象可以判定用户所使用的浏览器,包含了浏览器相关信息。

navigator.appName  // Web浏览器全称
navigator.appVersion  // Web浏览器厂商和版本的详细字符串
navigator.userAgent  // 客户端绝大部分信息
navigator.platform   // 浏览器运行所在的操作系统

history对象

window.history 对象包含浏览器的历史。
浏览历史对象,包含了用户对当前页面的浏览历史,但我们无法查看具体的地址,可以简单的用来前进或后退一个页面。

history.forward()  // 前进一页
histroy.back()  //  后退一页

location对象

window.location 对象用于获得当前页面的地址(URL),并把浏览器重定向到新的页面。

location.href  获取URL网址
location.href='URL'  跳转到指定页面https//www.bing.com/
location.reload()  重新加载页面

弹出框

可以在JavaScript中创建三种消息框:警告框、确认框、提示框。

警告框

警告框经常用于确保用户可以得到某些信息。当警告框出现后,用户需要点击确定才能继续执行操作

alert('你好')
确认框

确认框用于使用户可以验证或者接受某些信息。当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。

confirm('请点击确定')
提示框

提示框经常用于提示用户在进入页面前输入某个值。当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。

prompt('请输入内容')

计时相关

通过使用JavaScript,我们可以在一定时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件

1.过一段时间之后触发(一次)

setTimeout()
setTimeout()方法会返回某个值。在上面的语句中,值被储存在名为t的变量中。假如你希望取消setTimeout(),你可以使用这个变量名来指定它。setTimeout()的第一个参数是含有JavaScript语句的字符串。这个语句可能诸如"alert(‘5 seconds!’)",或者对函数的调用,诸如alertMsg()。第二个参数只是从当前起多少毫秒后执行第一个参数(1000毫秒等于一秒)。

<script>
    function t(){
        console.log(123+Math.random());  定义一个函数t
    }

    var t1=setTimeout(t,2000);  单位是毫秒,两秒之后开始执行任务,只执行一次
    clearTimeout(t1);  清除计时器

	var t2=setInterval(t,2000); 单位是毫秒,每隔两秒执行一次
</script>
2.每隔三秒时间触发一次

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

function pri(){
        alert('666')
    }
    
    function data(){
        var ti = setInterval(pri,3000);
        function tt(){
            clearTimeout(ti);
        }
        setTimeout(tt,9000);
    }
    
    data()

DOM操作

DOM(Document Object Model)是一套对文档的内容进行抽象和概念化的方法。当网页被加载是,浏览器会创建网页的文档对象模型(Document Object Model)。HTML DOM 模型被构造为对象的数。

HTML DOM树

前端BOM、DOM,前端

DOM标准规定HTML文档中的每个成分都是一个节点(node):
    文档节点(document对象):代表整个文档
    元素节点(element 对象):代表一个元素(标签)
    文本节点(text对象):代表元素(标签)中的文本
    属性节点(attribute对象):代表一个属性,元素(标签)才有属性
    注释是注释节点(comment对象) 

JavaScript 可以通过DOM创建动态的 HTML:
    JavaScript 能够改变页面中的所有 HTML 元素
    JavaScript 能够改变页面中的所有 HTML 属性
    JavaScript 能够改变页面中的所有 CSS 样式
    JavaScript 能够对页面中的所有事件做出反应

查找标签

DOM 是指文档对象模型,通过它可以访问HTML文档的所有元素,既然DOM操作是通过js代码来操作标签,那么我们需要先学习如何查找标签之后才能给标签绑定一些js代码(DOM操作)

直接查找
document.getElementById('d1')  //根据ID获取一个标签
document.getElementsByClassName('c1') //根据class属性获取,结果是数组里面含有多个标签对象
document.getElementsByTagName('span')  //根据标签名获取标签合集,结果是数组里面含有多个标签对象
document.getElementsByTagName('span')[索引值]  //索引取值
间接查找
parentElement             父节点标签元素
children                 所有子标签
firstElementChild        	第一个子标签元素
lastElementChild         	最后一个子标签元素
nextElementSibling       	下一个兄弟标签元素
previousElementSibling   	  上一个兄弟标签元素
<div id="div1" class="c1">
    <p id="p1" clss="pp1">
        <span></span>
    </p>
    <p id="p2" clss="pp1">
        <span></span>
    </p>
</div>

1.parentElement 父节点标签元素

var span = document.getElementsByTagName('span')[0];
console.log(span);
var p = span.parentElement.parentElement;  //每写一个parentElement就会向上找一个父元素标签
console.log(p);

2.children 所有子标签

var div = document.getElementById('div1');
var p = div.children[0]; //会找到所有子标签并放在一个数组里,根据索引取
console.log(p)

3.firstElementChild 第一个子标签元素

var p1 = div.firstElementChild;  第一个子元素
var p1 = div.firstElementChild;  最后一个子元素
console.log(p1);

4.nextElementSibling 下一个兄弟标签元素和previousElementSibling 上一个兄弟标签元素

var p2 = document.getElementById('p2');
console.log(p2);

var p1 = p2.previousElementSibling;  //上一个兄弟元素
console.log(p1);

var p3 = p2.nextElementSibling;  //下一个兄弟元素
console.log(p3);

节点操作

1.js代码创建一个标签
	let somenode = document.createElement('a')
2.添加节点
    somenode.appendChild(newnode)//添加在后面的节点
    somenode.insertBefore(newnode,某个节点); // 添加在某个节点后面
3.删除节点
	somenode.removeChild(要删除的节点)4.替换节点
	somenode.replaceChild(newnode, 某个节点);
5.属性节点
	//获取文本节点的值
    var divEle = document.getElementById("d1")
    divEle.innerText
    divEle.innerHTML
    //设置文本节点的值
    var divEle = document.getElementById("d1")
    divEle.innerText="1"
    divEle.innerHTML="<p>2</p>"
    //attribute操作
    var divEle = document.getElementById("d1");
    divEle.setAttribute("age","18") //兼容默认属性和自定义属性
    divEle.getAttribute("age")
    divEle.removeAttribute("age")
    // 自带的属性还可以直接.属性名来获取和设置
    imgEle.src
    imgEle.src="..."
操作

需求1:

1.通过DOM操作动态的创建img标签
2.并且给标签加属性
3.最后将img标签追加到div标签尾部文本中
注意:错误的方式(自定义属性没办法点的方法设置

前端BOM、DOM,前端

需求2:

1.创建a标签 设置属性 设置文本
2.添加到标签内部
3.指定将a标签塞在p标签上面
<div id="div1" class="d1">

 </div>
 <script>
 1.创建a标签
     var a = document.createElement('a');
     2.设置标签默认属性
     a.href='https://www.mzitu.com/';
     3.给标签设置文本内容
     a.innerText='点我看美女';
     4.// js代码查找div标签ID并将a追加到div内部
     var div = document.getElementById('div1');
     div.appendChild(a);
 </script>

innerText与innerHTML的区别

.innerText  		 获取标签内部所有的文本内容
.innerText = '文本'  替换/设置标签内部的文本(不识别标签语法)

.innerHTML			获取标签内部所有的标签包含文本
.innerHTML = '文本'  替换/设置标签内部的文本(识别标签语法)

获取值操作

1.针对用户输入的和用户选择的标签

标签对象.value

2.针对用户上传的文件数据(需要索引取值)

标签对象.files fileList [文件对象、文件对象、文件对象]
标签对象.files[0] 文件对象
注意:点value无法获取到文件数据(错误取值),获取的是文件路径,要加上索引值
eg:
fileEle.value
‘C:\fakepath\新建 DOC 文档.doc’

代码实操:
<form action="">
    <p>username:
        <input type="text" id="username">
    </p>
    <p>province:
        <select name="" id="pro">
            <option value="牛奶">111</option>
            <option value="果茶">222</option>
            <option value="学习">333</option>
        </select>
    <p>file:
    <input type="file" id="file">
    </p>
    </p>
</form>
class与CSS操作
1.js操作标签css样式
	标签对象.style.属性名(下划线没有 变成驼峰体)
	标签对象.style.color = 'red'  //字体颜色
	标签对象.style.fontSize = '28px'  //字体大小
	标签对象.style.backgroundColor = 'yellow'  //背景颜色
	标签对象.style.border = '3px solid red'  //边框
	标签对象.style.margin
	.....
2.js操作标签class属性
	标签对象.classList  // 获取标签所有的类属性
	标签对象.classList.add('bg_yellow')  //添加类
  	标签对象.classList.contains()  //验证是否包含某个类属性true/false
    标签对象.classList.remove()  //移除某个类属性
    标签对象.classList.toggle()  // 有则删除无则添加 有则返回true

<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
         div {
            height: 400px;
            width: 400px;
            border-radius: 50%;}
        .bg_red {
            background-color: red;}
        .bg_green {
            background-color: greenyellow;}
  </style>
</head>
<body>
<P id="d1">  今天内容挺多的</P>
<div id="d2" class="bg_red  bg_green"> </div>
</body>

浏览器终端操作

事件

HTML 4.0 的新特性之一是有能力使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时启动一段 JavaScript。下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作。

简单理解就是通过js代码给HTML标签绑定一些自定义工能

常见事件

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

......

补充知识:
ondblclick     当用户双击某个对象时调用的事件句柄。
onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。
onload         一张页面或一幅图像完成加载。
onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。
onselect      在文本框中的文本被选中时发生。
onsubmit      确认按钮被点击,使用的对象是form。

this是实参,表示触发事件的当前元素,函数定义过程中的ths为形参。

绑定事件的多种方式
	<!--绑定事件的方式1-->
    <button onclick="showMsg()">快按我</button>

    <!--绑定事件的方式2-->
    <input type="button" value="快快快" id="d1">

        <script>
            function showMsg() {
                let msg = prompt('你确定要这样吗?');
                console.log(msg)
            }
            let inputEle = document.getElementById('d1');
            inputEle.onclick = function () {
                alert('谁在那里点我!!!')
            }
        </script>

事件函数中的this关键字
	this指代的就是当前被操作的标签对象本身	
 	如果事件函数内有多层嵌套那么最好在一开始用变量存储一下防止后续变化

window.onload

当我们给页面上的元素绑定事件的时候,必须等到文档加载完毕。因为我们无法给一个不存在的元素绑定事件,window.onload事件在文件加载过程结束的时候触发。此时,文档中的所有对象都位于DOM中,并且所有图像,脚本,链接和子框架都已完成加载。

onload方法
	XXX.onload 等待XXX加载完毕之后再执行后面的代码

事件案例:文章来源地址https://www.toymoban.com/news/detail-740161.html

定时器案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<input type="text" id="i1">
<button id="b1">开始</button>
<button id="b2">结束</button>

<script>
    var t;
    function showTime() {
        var i1Ele = document.getElementById('i1');
        var time = new Date();
        i1Ele.value = time.toLocaleString();
    }
    showTime();
    var b1Ele = document.getElementById('b1');
    b1Ele.onclick = function (ev) {
        if (!t){
            t = setInterval(showTime,1000)
        }
    };
    var b2Ele = document.getElementById('b2');
    b2Ele.onclick = function (ev) {
       clearInterval(t);
       t = undefined
    };

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


省市联动
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<select name="" id="province">
    <option value="">请选择</option>

</select>

<select name="" id="city">
    <option value="">请选择</option>
</select>

<script>
    var data = {
        "河北省": ["廊坊", "邯郸", "保定", "邢台", "石家庄"],
        "北京": ["朝阳区", "海淀区", "大兴", "通州"],
        "河南": ["郑州", "周口", "信阳", "洛阳"],
    };
    var province = document.getElementById('province');
    var city = document.getElementById('city');
    // 1. 要循环data数据,拿到data数据的key值是省作为第一个下拉框的数据
    for (var i in data) {
        // 这里的i值就是data 的key值、其实就是省数据,我想拿到省对应的市所有数据,怎么拿?
        // console.log(data[i])
        // 2. 创建option标签,怎么样创建标签
        var option = document.createElement('option'); // <option value=""></option>

        // 3. 给option标签设置value值和文本数据
        option.value = i;  // <option value="河北省">河北省</option>
        option.innerText = i; // <option value="北京">北京</option>
        // 4. 把option追加到省的select中取
        province.appendChild(option);
    }

    // 接下来给省的下拉框绑定事件
    province.onchange = function () {
        // 1. 先拿到当前用户选择的是哪个省的数据
        // var current_province = province.value;
        var current_province = this.value;

        // 2. 根据选择的省获取对应的市信息
        var current_city_list = data[current_province]; // ["朝阳区", "海淀区", "大兴", "通州"],
        city.innerText = '';
        city.appendChild('<option value="">请选择</option>');
        // 3. 循环的把获取到的所有市列表放到第二个select框去
        for (var i = 0; i < current_city_list.length; i++) {
            var option = document.createElement('option'); // <option value=""></option>

            // 3. 给option标签设置value值和文本数据
            option.value = current_city_list[i];  // <option value="河北省">河北省</option>
            option.innerText = current_city_list[i]; // <option value="北京">北京</option>
            // 4. 把option追加到省的select中取
            city.appendChild(option);
        }
    }

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

到了这里,关于前端BOM、DOM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript 入门指南(三)BOM 对象和 DOM 对象

    BOM(browser Object Model)即浏览器对象模型 BOM 由一系列对象组成,是访问、控制、修改浏览器的属性的方法 BOM 没有统一的标准(每种客户端都可以自定标准)。 BOM 的顶层是 window 对象 window 对象表示浏览器中打开的窗口。 使用 window 对象中的属性和方法,可以省略对象名,直

    2024年04月09日
    浏览(43)
  • JavaScript的三大组成部分是什么?JavaScript的核心组成部分解析:语法、BOM和DOM

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月10日
    浏览(46)
  • 前端开发技术——BOM

    1 下列选项中,用于获取浏览器相关信息的对象是() A、 window对象 B、 history对象 C、 navigator对象 D、 location对象 正确答案: C 2 下列选项中,表示浏览器对象模型的是() A、 DOM B、 BOM C、 document D、 window 正确答案: B 3 下列选项中,表示全局对象的是() A、 DOM B、 BOM C、

    2024年02月01日
    浏览(41)
  • 前端BOM操作详解:从基础到实践

    对于前端开发人员来说,浏览器对象模型(BOM)是至关重要的。BOM提供了与浏览器窗口和导航等交互的功能,通过它,我们可以控制浏览器窗口的大小、滚动、定位和其他更多操作。在本文中,我们将深入探讨前端BOM的操作,从基础概念到实际应用,帮助读者更好地理解和掌

    2024年02月09日
    浏览(37)
  • 〖大前端 - 基础入门三大核心之JS篇㊼〗- BOM基础之window对象

    说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费 , 如需要项目实战或者是体系化资源,文末名片加V! 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司担任研发部门CTO。 荣誉: 2022年度博客之星Top4、2023年度超

    2024年02月05日
    浏览(57)
  • 前端-Virtual Dom

    为什么需要 Virtual Dom 如果以上操作对应到 DOM 中,那么就是以下代码 当然在实际操作中,我们还需要给每个节点⼀个标识,作为判断是同⼀个节点的依据。所以这也是 Vue 和 React 中官⽅推荐列表⾥的节点使⽤唯⼀的key 来保证性能。 那么既然 DOM 对象可以通过 JS 对象来模拟,

    2024年02月14日
    浏览(37)
  • 前端中什么是DOM对象

    DOM(文档对象模型)是一种编程接口,用于HTML和XML文档。它提供了一种将文档结构表示为树结构的方式,这使得程序和脚本能够动态地访问和更新文档的内容、结构和样式。 在前端开发中,DOM是非常重要的概念。当浏览器加载网页时,它会创建一个DOM,这个DOM表示了网页的

    2024年02月02日
    浏览(35)
  • 【前端】对前端小白极为友好的JS DOM入门文章

    在现代web开发中,JavaScript (JS) 是不可或缺的一部分,它使我们能够为网页赋予交互性和动态性。其中,DOM(文档对象模型)技术在前端开发中起着至关重要的作用。本篇博客将带领前端初学者深入理解JavaScript DOM技术,为你构建坚实的基础。 文档对象模型(Document Object Mode

    2024年02月14日
    浏览(33)
  • 前端面试:【DOM】编织网页的魔法

    嘿,亲爱的代码魔法师!在JavaScript的奇幻世界里,有一项强大的技能,那就是 DOM操作 。DOM(文档对象模型)操作允许你选择、修改和创建网页元素,就像是在编织一个魔法的网页。 1. 什么是DOM? DOM是一个表示网页结构的树状结构,它把网页的每个部分都表示为一个对象,

    2024年02月11日
    浏览(38)
  • 什么是虚拟DOM(Virtual DOM)?它在前端框架中的作用是什么?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包