51 前端--BOM/DOM

时间:2019-09-17
本文章向大家介绍51 前端--BOM/DOM,主要包括51 前端--BOM/DOM使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

BOM

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

1. window对象

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

window的子对象

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

screen对象

screen.availWidth - 可用的屏幕宽度
screen.availHeight - 可用的屏幕高度

history对象

history.forward()  
// 前进一页,其实也是window的属性,window.history.forward()
history.back()  // 后退一页

location对象(***)

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

location.href  获取当前页面的地址(URL)
location.href="URL" // 跳转到指定页面
location.reload() 重新加载页面,就是刷新一下页面

2. 弹出框

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

警告框

  警告框经常用于确保用户可以得到某些信息。

   当警告框出现后,用户需要点击确定按钮才能继续进行操作。

alert('看到了吗?');

确认框

确认框用于使用户可以验证或者接受某些信息。

当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。

如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。

confirm("你确定吗?")

可以根据返回的true和false来判断一下,然后根据这个值来使用location去跳转对应的网站。

<script>
    // alert('看到了吗?');
    b = confirm('你确定吗?');
    if (b){
        location.href='http://www.baidu.com'
    }else{
        window.close()
    }
</script>

提示框

提示框经常用于提示用户在进入页面前输入某个值。

当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。

如果用户点击确认,那么返回值为输入的值。如果用户没有输入点击确认,那么返回值为默认值,就是第二个参数,如果没有默认值那么返回“”。点击取消,返回null

prompt("请在下方输入","你的答案")

3. 计时器(***)

setTimeout :一段时间后做一些事情

语法:
var t=setTimeout("JS语句",毫秒)  第一个参数js语句多数是写一个函数,不然一般的js语句到这里就直接执行了,先用函数封装一下,返回值t其实就是一个id值(浏览器给你自动分配的)
var a = setTimeout(function f(){
    confirm('确定吗?');},3000);        
    // function不用引号,3000是毫秒。 3s后执行函数。

clearTimeout():取消setTimeout设置

语法:
clearTimeout(setTimeout_variable)
// 在指定时间之后执行一次相应函数
var timer = setTimeout(function(){alert(123);}, 3000)
clearTimeout(timer);        // 取消setTimeout设置

setInterval(): 每隔一段时间做一些事情

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

语法:
setInterval("JS语句",时间间隔);

clearInterval():取消setInterval设置

clearInterval() 方法可取消由 setInterval() 设置的 timeout。

clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。

语法:
clearInterval(setinterval返回的ID值)

示例:

var a = setInterval(function f1(){
    confirm("are you ok?");},3000);
clearInterval(a);

DOM

DOM(Document Object Model)是一套对文档的内容进行抽象和概念化的方法。

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

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

1. HTML DOM 树

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

  • 文档节点(document对象):代表整个文档
  • 元素节点(element 对象):代表一个元素(标签)
  • 文本节点(text对象):代表元素(标签)中的文本
  • 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
  • 注释是注释节点(comment对象) 

JavaScript 可以通过DOM创建动态的 HTML:

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应(鼠标点击事件,鼠标移动事件等)

2. 查找标签

document.getElementById('id的值');    // 根据id获取一个标签
document.getElementsByClassName('类的值');   //根据class属性获取(可以获取多个元素,所以返回的是一个数组)
document.getElementsByTagName('标签名');     //根据标签名获取标签合集
示例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="c1" id="d1">这是div1标签
    <span id="s1">span1标签</span>
    <span id="s2">span2标签</span>
    <span id="s3">span3标签</span>
</div>

<div class="c2 cc2" id="d2">这是div2标签</div>
</body>
</html>

操作:
var divEle = document.getElementById('d1');
var divEle = document.getElementsByClassName('c1');
var divEle = document.getElementsByTagName('div');

3. 间接查找

parentElement            父节点标签元素
children                 所有子标签
firstElementChild        第一个子标签元素
lastElementChild         最后一个子标签元素
nextElementSibling       下一个兄弟标签元素
previousElementSibling   上一个兄弟标签元素
示例:
var divEle = document.getElementById('d1');
divEle.parentElement;   // body标签
divEle.children;    // 所有的子标签
divEle.firstElementChild; //第一个子标签
divEle.lastElementChild;
divEle.nextElementSibling;

4. 节点操作

创建节点:(创建标签)

语法:

  createElement(标签名)

var aEle = document.createElement("a");

添加节点

语法:

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

    somenode.appendChild(newnode);

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

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

示例:
var divEle = document.getElementById('d1');
var aEle = document.createElement("a"); //创建a标签
divEle.appendChild(aEle);   // 添加到div最后

var spanEle = document.getElementById("s2"); 
var pEle = document.createElement("p"); //创建p标签
divEle.insertBefore(pEle,spanEle);  // 添加到div中span2前

删除节点:

语法:

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

  somenode.removeChild(要删除的节点)

示例:
var divEle = document.getElementById('d1');
var span2 = document.getElementById('s2');
divEle.removeChild(span2);  //删除span2标签

替换节点:

语法:

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

  somenode是父级标签,然后找到这个父标签里面要被替换的子标签,然后用新的标签将该子标签替换掉

示例:
var divEle = document.getElementById('d1');
var div3 = document.createElement("div");
var span2 = document.getElementById('s2');
divEle.replaceChild(div3,span2);    // 替换span2

属性节点:

获取文本节点的值

var divEle = document.getElementById("d1")
divEle.innerText  //获取该标签和内部所有标签的文本内容
divEle.innerHTML //获取的是该标签内的所有内容,包括文本和标签

设置文本节点的值

var divEle = document.getElementById("d1")
divEle.innerText="1";   // div中只要一个1,不能够识别标签
divEle.innerHTML="<a href=''>百度</a>" // 能识别标签

创建标签并设置值:

var dEle = document.createElement("div");
dEle.innerHTML = '这是div2';

Attribute 操作

var divEle = document.getElementById("d1");
divEle.setAttribute("age","18")  // 比较规范的写法 给div标签增加age="18"的属性
divEle.getAttribute("age")      // 查看
divEle.removeAttribute("age")   // 删除

自带的属性:
aEle.href;      // 查看href属性的值
aEle.href = 'xxx';  // 修改href属性的值

示例:
<a href="http://www.baidu.com">百度</a>
操作
var a = document.getElementsByTagName('a');
a[0].href;  //获取值
a[0].href = 'xxx'; //设置值

获取值操作:

适用于input、select、textarea标签。

语法:

  elementNode.value

input输入框
inpEle.value;       // 获取input标签输入的值
inpEle.value = 'xxx';   // 修改input标签输入的值

示例:
<div>
    用户名:<input type="text" name="username" id="username">
</div>
操作:
var inpEle = document.getElementById('username');
inpEle.value;   //获取输入框中输入的内容
inpEle.value = "SD"; // 设置输入框中的值为SD
select下拉框

selEle.value;   // 获取select标签中value的值
selEle.value='1';   // 设置select标签中value的值

示例:
<select name="city" id="select1">
        <option value="1">广东</option>
        <option value="2">惠州</option>
        <option value="3">东莞</option>
</select>
操作:
var selEle = document.getElementById('select1');
selEle.value;   // "2"

class的操作

获取标签对象
标签对象.classList.remove(cls)  删除指定类
classList.add(cls)  添加类
classList.toggle(cls)  存在就删除,否则添加,toggle的意思是切换,有了就给你删除,如果没有就给你加一个

classList.contains(cls)  判断类值是否存在,存在返回true
示例:动图
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1{
            width: 200px;
            height: 200px;
            background-color: red;
        }
        .c2{
            width: 200px;
            height: 200px;
            background-color: green;
        }
    </style>
</head>
<body>
    <div class="c1 cc" id="d"></div>
</body>
</html>

操作:
var dEle = document.getElementById("d");
var a = setInterval(function f(){dEle.classList.toggle("c2");},30);
clearInterval(a)

css设置操作

1.对于没有中横线的CSS属性一般直接使用style.属性名即可。
obj.style.margin
obj.style.width
obj.style.left
obj.style.position
2.对含有中横线的CSS属性,将中横线后面的第一个字母换成大写即可。
obj.style.backgroundColor
obj.style.marginTop
obj.style.borderLeftWidth
obj.style.zIndex
obj.style.fontFamily
示例:
设置值:
    divEle.style.backgroundColor = 'yellow';
获取值
    divEle.style.backgroundColor;

事件

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

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

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

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

绑定事件方式一:

先找标签divEle
divEle.onclick = function (){
    divEle.style.backgroundColor = 'pink';
}       //左键捕获、触发
示例
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1{
            width: 200px;
            height: 200px;
            background-color: red;
        }
        .c2{
            width: 200px;
            height: 200px;
            background-color: green;
        }
    </style>
</head>
<body>
    <div class="c1 " id="d"></div>
    <script>
        var dEle = document.getElementById("d");
        dEle.onclick = function f() {
            //dEle.style.backgroundColor = 'pink';
            this.style.backgroundColor = 'pink';
        }
    </script>
</body>
</html>
// 鼠标一点击会变颜色

绑定事件方式二:

在标签中添加 onclick = f() 属性
然后在 js中定义f()函数。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1{
            width: 200px;
            height: 200px;
            background-color: red;
        }
        .c2{
            width: 200px;
            height: 200px;
            background-color: green;
        }
    </style>
</head>
<body>
    <div class="c1 " id="d" onclick="f()"></div>
    <script>
        function f() {
            var dEle = document.getElementById("d");
            dEle.style.backgroundColor = 'pink';
            
        }
    </script>
</body>
</html>

获取当前操作标签

属性中:onclick = f(this)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1{
            width: 200px;
            height: 200px;
            background-color: red;
        }
        .c2{
            width: 200px;
            height: 200px;
            background-color: green;
        }
    </style>
</head>
<body>
    <div class="c1 " id="d" onclick="f(this);"></div>
    <script>
        function f(th){
            th.style.backgroundColor='purple';
            }
    </script>

</body>
</html>

原文地址:https://www.cnblogs.com/yzm1017/p/11537518.html