首页 > 其他分享 >BOM和DOM

BOM和DOM

时间:2023-07-21 21:46:31浏览次数:24  
标签:console log img DOM 标签 BOM var div

基础介绍

js的三部分组成

ECMAScript、BOM(浏览器对象模型,就是js操作浏览器)、DOM(文档对象模型,js操作html文档、css样式等)
BOM:大部分内容作为了解
DOM:需要熟练掌握

window对象常用方法

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

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

# history对象(了解即可)
history.forward() // 前进一页
history.back() // 后退一页

# location对象------------------->掌握重要
location.href 获取URL
location.href="URL" // 跳转到指定页面,在pycharm写就会直接跳转至写入的界面
location.reload() 重新加载页面

# 弹出框
alert("你看到了吗?");
confirm("你确定吗?")
prompt("请在下方输入","你的答案")

计时相关(定时器)

setTimeout只执行一次:

    function f1(){
        console.log(123+Math.random());
    }
      var t1 = setTimeout(f1,3000) //单位是毫秒,三秒后执行,只执行一次

清除定时器

clearTimeout(t1);

setInterval多次循环

function f1(){
        console.log(100+Math.random())
    }
    var t2 = setInterval(f1,3000)

闭包定时器(执行3次alert)

    function f2(){
        alert(12345);
    }
    function show(){
        let t = setInterval(f2,3000);
        function inner(){
            clearInterval(t)
        }
        setTimeout(inner,9000);
    }
    show()

 

DOM(重点)

 

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

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

 

查找标签:

<div id="d1" class="c1">div</div>
<div id="d2" class="c1">div</div>
<div id="d3" class="c1">div</div>
<input type="text" name="username">

以下例子按上述代码查找

直接查找:

用(id)getElementById查找

    var div = document.getElementById('d1')
    console.log(div);

    var div1 = document.getElementById('d2')
    console.log(div1)

    var div2 = document.getElementById('d3')
    console.log(div2)

用(class)getElementsByClassName查找

var div = document.getElementsByClassName('c1')
    console.log(div)

结果:

 索引取值

  var div = document.getElementsByClassName('c1')[0]
    console.log(div)

 用标签取值(getElementsByTagName),也可索引取值,同class  

var div = document.getElementsByTagName('div');
console.log(div);

 通过定义属性查找

    var div3 = document.getElementsByName('username'); // 通过input的name属性获取
    console.log(div3);

 间接查找

parentElement       父节点标签元素
children            所有子标签
firstElementChild       第一个子标签元素  (相当于children的索引0.)
lastElementChild        最后一个子标签元素 (children的最后一个值)
nextElementSibling      下一个兄弟标签元素   (同级标签的下面一个)
previousElementSibling    上一个兄弟标签元素     (同级标签的上面一个)

 

当用class查找的时候要索引,否则无法准确到取的具体值,但是id取值不用索引。

children也需要索引

<div class="div5">
    <ul class="u1">
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
</ul>
</div>

    var div = document.getElementsByClassName('div5')[0];
    console.log(div)
    var ul = div.children[0];
    console.log(ul)
 

节点操作

举例:动态创建一个img标签出来

    var img = document.createElement('img');
    //找到要放入div的位置
    var div = document.getElementById('d1');
    // 给img标签设置src属性
    img.src = '1234.png';
    img.alt='xixixi';
    //给标签设置属性的时候,只能给标签自带的属性添加,自定义属性不能通过点形式设置
    //img.username = 's1'//这个方式是不可以的
    //设置自定义属性用
    img.setAttribute('username','s1');
    console.log(img.getAttribute('username'));//取定义的username的值
    //移除username
    img.removeAttribute('username');
    console.log(img);

    //将img标签放到div里
    div.appendChild(img);

创建a链接出来

    // 1. 常见出来a标签
    var a = document.createElement('a');  // <a></a>

    // 2. 设置属性
    a.href = 'http://www.baidu.com';  // // <a href='http://www.baidu.com'></a>
    a.title = '这是a';

    // 3. 给a标签设置文本内容
    // a.innerText = '<h1>点我看美女</h1>';  // <a href='http://www.baidu.com'>点我看美女</a>
    a.innerHTML = '<h1>点我看美女</h1>'  // 识别html标签
    console.log(a);

    // 4. 把a放到div里面取
    var div = document.getElementById('d1');
    div.appendChild(a);

 

 

 

标签:console,log,img,DOM,标签,BOM,var,div
From: https://www.cnblogs.com/YeeQX/p/17572444.html

相关文章

  • regexp对象、math对象、dom、bom、事件
    RegExp对象JS定义正则的两种方式varreg1=newRegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");第一种定义方式varreg2=/^[a-zA-Z][a-zA-Z0-9]{5,11}/第二种定义方式正则数据校验.test(‘数据’):匹配数据是否正确,匹配的位数超过正则的位数或者等于正则位数为ture,没有到达......
  • pytorch使用(四)np.random.randint用法
    np.random.randint用法np.random.randint是numpy库中用于生成随机整数的函数。它的用法如下:numpy.random.randint(low,high=None,size=None,dtype='l')其中,各个参数的含义如下:low:生成的随机整数的下限(包含)。high:生成的随机整数的上限(不包含)。如果不提供high参数,则生......
  • 【Vue】vue获取dom元素
    vue中准确的拿到那个元素用ref,ref是绑定给子组件<普通元素也可以绑定ref>ref如果是绑定在组件中的,那么通过this.$refs.ref的name获取到的是一个组件对象ref如果是绑定在普通的元素中的,那么通过this.$refs.ref的name获取到的是一个元素对象 html<divref='a'>aaaaa......
  • SOLIDWORKS PDM中如何快速生成BOM,SolidKits助您一臂之力
    在SOLIDWORKSPDM中,生成BOM操作是比较简单的,但前提条件是我们的模型必须具有相应的属性信息才可以。SolidKits.Reports企业高级报表软件给用户提供了一种更加便捷的出BOM的方式,使我们的工作效率更高,其使用方法也非常简单,我们一起来看下操作步骤吧!首先找到需要生成BOM的总成文件,然......
  • Reactjs学习-props, state, render之间的关系以及虚拟Dom
    本篇是关于React的基础-渲染以及虚拟domprops,state, render之间的关系当组件的state或者props发生改变时,render函数重新执行当父组件的render函数执行时,子组件的render函数也会重新执行2.虚拟Dom产生背景:react是视图层的框架,数据加JSX模板构成我们的视图,数据会发生改变......
  • [ARC104E] Random LIS 题解
    [ARC104E]RandomLIS题解Link吐了,一下午就写了这一个题……主要是题解都说的很草率。然后上课的时候貌似讲的方法不是很能做(也许是我太菜了),总之我得写篇题解整理整理。首先\(n\)很小,可以直接爆搜所有相对大小,即我们去搜索\(1\)到\(n\)的排名,排名可以一样(即\(a_i\)相......
  • ABAP-CS02BOM批量修改
    1FUNCTIONzfm_pp_0009.2*"----------------------------------------------------------------------3*"*"本地接口:4*"EXPORTING5*"VALUE(EV_TYPE)TYPECHAR16*"VALUE(EV_MESSAGE)TYPECHAR2557*&quo......
  • cpp generate uuid by random
    #include<cstdio>#include<cstdlib>#include<ctime>#include<cstdint>uint32_trand32(){return((rand()&0x3)<<30)|((rand()&0x7fff)<<15)|(rand()&0x7fff);}boolgen_uuid4(chardst[37]......
  • [Javascript] DOM alias $, $$
    const$=()=>document.querySelector.call(this,arguments);const$$=()=>document.querySelectorAll.call(this,arguments);HTMLElement.prototype.on=(a,b,c)=>this.addEventListener(a,b,c);HTMLElement.prototype.off=(a,b)=>this.......
  • 题解 CF1842H【Tenzing and Random Real Numbers】
    看了题解。好难受,想用积分求概率,算了半天。发现没啥规律,不是不能算,就是太可怕了。Problem有\(n\)个\([0,1]\)范围内的均匀随机变量\(x_{1\cdotsn}\)和\(m\)条限制,每条限制形如\(x_i+x_j\le1\)或\(x_i+x_j\ge1\)。请你求出所有限制均满足的概率。对\(998244353\)......