首页 > 其他 > 详细

Bom与Dom

时间:2019-06-03 22:18:55      阅读:129      评论:0      收藏:0      [点我收藏+]

BOM操作

操作浏览器,需要调用window对象,它是所有浏览器都支持的对象,表示的就是浏览器窗口

window对象可以通过点调用子对象

  • window.navigator

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

  • window.history

    history.forward()  // 前进一页
    history.back()  // 后退一页
  • window.location(重点)

    location.href  获取URL
    location.href="URL" // 跳转到指定页面
    location.reload() 重新加载页面
  • 弹出框

    警告框(alert)
    确认框(confirm)
    提示框(prompt)
  • 计时器相关(重点)

    • setTimeout与clearTimeout(设置单次定时触发,清除)

    • setInterval与clearInterval(循环触发,清除)

      function f1() {
          alert(123);
      }
      
      function clear() {
          var t = setInterval(f1,3000);
          function inner() {
              clearInterval(t);
          }
          setTimeout(inner,9000)
      }
      clear();

DOM操作

通过JS代码操作html页面,实现相应效果

要想操作html页面,实现相应动态效果,第一步还是得先解决查找标签的事情

查找标签

直接查找

document.getElementById
document.getElementsByClassName
document.getElementsByTagName

间接查找

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

js代码在书写时,一定要保证在页面html文件全部加载完毕后才能正常执行,否则报错。两种解决方式

  • window.onload = function(里面写js代码)title标签内部
  • js写在html文档最下方

节点操作

  • 1.创建节点,2.添加自定义属性,3.添加固有属性,4.添加到DOM树中浏览器展示

    // appendChild 直接尾部添加
    
    // 创建标签
    var imgEle = document.createElement('img');
    // 设置自定义属性
    imgEle.setAttribute('id','i1')
    // 设置固有的属性
    imgEle.src = 'longzhu.png'
    // 添加到DOM树中,让浏览器展示出来
    var d1Ele = document.getElementById('d1')
    d1Ele.appendChild(imgEle)
  • 1.创建节点,2.添加固有属性和标签文本值,3.指定位置添加标签

    <span>div上面的span</span>
    <div>div
        <p>div里面的第一个p</p>
        <span id="s1">
            div里面的span
        </span>
        <p>div里面的第二个p
            <span>div里面的p里面的span</span>
        </p>
    
    </div>
    <span>div的邻居</span>
    // insertBefore 固定位置添加
    
    // 创建标签
    var aEle = document.createElement("a")
    aEle.href = 'https:www.baidu.com'
    aEle.innerText = '点我点我'
    // 获取参考点标签
    var spanEle = document.getElementById('s1');
    var divEle = document.getElementsByTagName('div')[0];
    // 在d3标签内部,s1标签上方添加创建的a标签
    divEle.insertBefore(spanEle,aEle)
    • innerText和innerHTML的区别

      // 获取一个标签
      var d2Ele = document.getElementById('d2');
      // 仅仅能获取到d2标签的内部文本
      d2Ele.innerText
      // 不仅获取文本,标签页全部获取到
      d2Ele.innerHTML
      
      // 获取标签
      var d2Ele = document.getElementById('d2');
      // 设置内部文本
      d2Ele.innerText = '哈哈'
      d2Ele.innerHTML = '呵呵'
      // 设置内部文本(文本中包含标签)
      d2Ele.innerText = '<h1>我是h1</h1>' // 不认识html标签
      d2Ele.innerHTML = '<h1>我是h1</h1>' // 能够识别html标签

    1.获取用户输入的操作

    <input type="text">
    <textarea name="" id="t1" cols="30" rows="10"></textarea>
    var inputEle = document.getElementsByTagName('input')[0]
    inputEle.value // 获取到用户输入的值 并且得到用户输入值
    inputEle.value = 'hello world'  // 给input框赋值
    
    • class操作
    <style>
            .c1 {
                width: 400px;
                height: 400px;
                border-radius: 50%;
                border: 3px solid black;
            }
            .bg_red {
                background-color: red;
            }
            .bg_green {
                background-color: green;
            }
        </style>
    <div class="c1 bg_red bg_green"></div>
    // 注意点:通过class获取到的数据是一个数组,需要通过索引拿到单个对象
    
    // 根据class找到相应的标签对象
    var cEle = document.getElementsByClassName('c1')[0]
    // 获取该标签对象的class属性列表并移除背景绿色
    cEle.classList.remove('bg_green')
    
    // 添加属性
    cEle.classList.add('bg-green')
    // 添加属性
    cEle.classList.add('bg-green')
    cEle.classList.contains('bg-red')
    // 有则删除,无则添加
    cEle.classList.toggle('bg-green')
    
    • style样式操作
      // 修改高度样式
      d1Ele.style.height = '200px'
      // 修改宽度样式
      d1Ele.style.width = '200px'
      // 修改背景色样式
      d1Ele.style.backgroundColor = 'blue'

事件绑定

常用事件

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

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

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

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

两种绑定事件的方法

  • 标签内直接调用相应事件函数
  • js代码自动查找标签并绑定事件

(onfocus,onblur)用户输入获取焦点示例

<input type="text" name="" id="inp" value="点击我获取焦点">
<script>
    let inpEle = document.getElementById('inp');
    inpEle.onfocus = function () {  //onfocus 在输入框中获取焦点
        inpEle.value = ''
    };
    inpEle.onblur = function() {
        inpEle.value = '点击我获取焦点'
    }
</script>

(onclick)点击事件案例

<input type="text" name="" id="inp" >
<button id="btn1">开始</button>
<button id="btn2">结束</button>
<script>
    // 定义一个存储定时器的全局变量
    var flag;
    // 先获取代码中需要用到的一些固定标签对象
    var inpEle = document.getElementById('inp');
    var btn1Ele = document.getElementById('btn1');
    var btn2Ele = document.getElementById('btn2');
    // 定义一个展示时间的函数
    var  showTime = function () {
        // 获取当前时间
        var time1= new Date();
        inpEle.value = time1.toLocaleString()
    };
    // 给b1标签绑定点击事件
    btn1Ele.onclick = function () {
         // 先判断flag是否已经指代了一个定时器
        if (!flag){
            flag = setInterval(showTime,1000)
        }

    };
    btn2Ele.onclick = function () {
        // 取消定时器
        clearInterval(flag);
        // 将标志位手动置为布尔值为false的值即可
        flag = null;


    }
</script>

onchange(事件)实现省市联动:

<select name="" id="s1"></select>
<select name="" id="s2"></select>

<script>
    // 先获取需要操作的标签对象
    var s1Ele = document.getElementById('s1');
    var s2Ele = document.getElementById('s2');
    var data = {"河北省": ["廊坊", "邯郸"], "北京": ["朝阳区", "海淀区"], "山东": ["威海市", "烟台市"]};
    // 将所有的省渲染到proEle标签内部  for循环获取所有的省
    for (let pro in data){
        // 创建option标签
        let opEle = document.createElement('option');
        // 给option标签设置文本值
        opEle.innerText = pro;
        // 将生成的option标签添加到proEle中
        s1Ele.appendChild(opEle)
    }
    s1Ele.onchange = function () {
        // 先清空cityEle标签内所有的内容
        s2Ele.innerHTML = '';
        // 获取用户选择的省 根据省拿到对应的市
        let choicePro= s1Ele.value;
        let cityList = data[choicePro];
        // for循环创建option标签添加到cityEle标签内
        for (let i =0;i<cityList.length;i++){
            // 创建option标签并添加文本
            let cEle = document.createElement('option');
            // 给option标签设置文本值
            cEle.innerText = cityList[i];
            // 将生成的option标签添加到proEle中
            s2Ele.appendChild(cEle)
        }
        
    }
</script>

window.onload

? 当我们给页面上的元素绑定事件的时候,必须等到文档加载完毕。因为我们无法给一个不存在的元素绑定事件。

? window.onload事件在文件加载过程结束的时候触发。此时,文档中的所有对象都位于DOM中,并且所有图像,脚本,链接和子框架都已完成加载。

? 注意:.onload()函数存在覆盖现象。

Bom与Dom

原文:https://www.cnblogs.com/ZKPython/p/10970419.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!