12-JavaScript-DOM开篇

2018-12-02  本文已影响0人  喝酸奶要舔盖__

界面元素获取

    var oDiv = document.getElementById("box");
    console.log(oDiv);
    console.dir(oDiv);

注意点:
有兼容性问题 IE9才支持
通过指定索引来确定查找哪一个元素

    var oDiv = document.getElementsByClassName("father")[1];
    console.log(oDiv);
    console.log(oDiv instanceof Array);
    var oDiv = document.getElementsByTagName("div");
    console.log(oDiv);
    var oDiv = document.querySelector("div");
    var oDivs = document.querySelectorAll("div");
    console.log(oDiv);
    console.log(oDiv instanceof Array);

注意点:
querySelector("div")和querySelectorAll("div")可以传入任何选择器


文档加载顺序


节点之间的关系

    // 一般情况下在JS中带Element单词的属性或者方法都有兼容性问题
    // parentElement: 获取父元素
    // parentNode: 获取父节点, 拿到的不一定是一个元素
    // 因为在DOM有节点有(标签节点/属性节点/文本节点)
    var oFDiv = oDiv.parentElement || oDiv.parentNode;
    console.log(oFDiv);
    var oLi = document.querySelector(".box");
    //兼容性写法
    var pre = oLi.previousElementSibling || oLi.previousSibling;
    console.log(pre);
    var oLi = document.querySelector(".box");
    var next = oLi.nextElementSibling || oLi.nextSibling;
    console.log(next);
    var oUl = document.querySelector("ul");
    // 4.1childNodes获取当前元素所有的子节点(标签节点/属性节点/文本节点)
    var oLis1 = oUl.childNodes;
    console.log(oLis1);
    // 4.2children获取当前元素所有的子元素
    var oLis2 = oUl.children;
    console.log(oLis2);

注意点: HTML没有父元素,但是有父节点,父节点是DOM对象

    var oDiv = document.querySelector("html");
    // Element是在Dom树中查找父元素, HTML没有父元素
    console.log(oDiv.parentElement);
    // Node是在Dom树中查找父节点, HTML的父节点就是DOM对象
    console.log(oDiv.parentNode);
    console.log(document);

节点的增删改查

    //获取元素
    var oDiv = document.querySelector(".box");
    // 2.如何创建一个元素
    // 根据指定的标签名称创建一个标签(元素)
    var oA = document.createElement("a");
    // console.log(oA);

    // 3.添加元素到界面上
    // 将传入的元素添加到调用的元素中
    // 注意点: 会添加到指定元素中的末尾
    oDiv.appendChild(oA);
    
    var oP = document.querySelector(".p2");
    var op1 = oP.previousElementSibling || oP.previousSibling;

    // insertBefore 将第一个参数的元素插入到第二个参数元素的前面作为父元素的子节点
    // oDiv.insertBefore(oA,oP);
    oDiv.insertBefore(oA,op1);

    // 4.删除指定的元素
    // 删除调用者当中的指定元素
    // 注意点: 只能通过父节点调用removeChild删除子节点
    //         不能自己删除自己
    oDiv.parentNode.removeChild(oDiv);

节点属性操作

获取属性
 var oImg = document.querySelector("img");
 // console.dir(oImg);
 console.log(oImg.src);
 console.log(oImg.alt);
 console.log(oImg.wjh);//自定义属性不能直接获取

注意点:
这种方式只能获取元素自带的属性,自定义的属性不能获取

注意点:
使用 getAttribute方法方法可以获取自定义的属性

删除属性
oImg.src = "";
oImg.alt = "";
oImg.removeAttribute("src");
oImg.removeAttribute("alt");
oImg.removeAttribute("wjh");//可以对自定义属性操作
设置属性值
oImg.setAttribute("alt", "我是心智");
oImg.setAttribute("lnj", "我是心智");

元素文本操作

注意点:
如果是获取, 会原封不动的将调用者中的内容返回给我们(包含标签)
如果是设置, 会利用设置的值覆盖调用者中所有的内容并且如果设置的值中包含了HTML标签, 也会解析创建之后再添加

    var oDiv = document.querySelector("div");
    console.log(oDiv.innerHTML);
    oDiv.innerHTML = "<a>我是a标签</a>";

注意点:
如果是获取, 会去掉调用者中的标签, 将其它的内容返回给我们, 并且会去除两端的空格
如果是设置, 会利用设置的值覆盖调用调用者中所有的内容并且如果设置的值中包含了HTML标签, 不会解析和创建, 会原样添加有兼容性的问题, 不能很好的支持所有的浏览器

var oDiv = document.querySelector("div");
console.log(oDiv.innerText);

注意点:
如果是获取, 会去掉调用者中的标签, 将其它的内容返回给我们, 但是不会去除两端的空格
如果是设置, 会利用设置的值覆盖调用调用者中所有的内容并且如果设置的值中包含了HTML标签, 不会解析和创建, 会原样添加有兼容性的问题, 不能很好的支持所有的浏览器

    var oDiv = document.querySelector("div");
    // console.log(oDiv.textContent);
    oDiv.textContent = "<a>我是a标签</a>";

注意点:
前面的三个属性用于获取或者设置双标签中的内容
如果想获取或者设置input中的内容, 需要使用value属性

    var oInput = document.getElementsByTagName("input")[0];
    console.log(oInput);
    console.log(oInput.value);

设置元素CSS样式

    oDiv.style.width = "100px";
    oDiv.style.height = "100px";
    //CSS中用-连接的属性名称, 都会去掉-, 将后面一个单词的首字母大写
    oDiv.style.backgroundColor = "#ccc";

注意点:
如果是设置宽度和高度, 需要添加单位, 否则会报错

通过style属性设置的样式都是行内样式, 所以会覆盖掉CSS代码设置的样式

<style>
        .box{
            width: 100px;
            height: 100px;
            background-color: #000;
        }
</style>
oDiv.className = "box";

知识要点:
如果是操作个别的样式, 那么推荐使用style属性
如果是操作多个的样式, 那么推荐使用className属性


上一篇 下一篇

猜你喜欢

热点阅读