美文网首页
原生js的基础方法等三,dom的操作

原生js的基础方法等三,dom的操作

作者: 阿克兰 | 来源:发表于2019-12-03 17:04 被阅读0次
var element=document.getElementById("header");
element.innerHTML="新标题";

改变 HTML 属性
<img id="image" src="smiley.gif">

<script>
document.getElementById("image").src="landscape.jpg";
</script>

改变 HTML 样式
document.getElementById(id).style.property=新样式
<p id="p1">Hello World!</p>
<p id="p2">Hello World!</p>
<script>
document.getElementById("p2").style.color="blue";
document.getElementById("p2").style.fontFamily="Arial";
document.getElementById("p2").style.fontSize="larger";
</script>
<p>以上段落通过脚本修改。</p>
 

onload 与 onunload

onload 和 onunload 事件
onload 和 onunload 事件会在用户进入或离开页面时被触发。

onload 事件可用于检测访问者的浏览器类型和浏览器版本,并基于这些信息来加载网页的正确版本。

onload 和 onunload 事件可用于处理 cookie

onchange <input type="text" id="fname" onchange="upperCase()">

addEventListener() 方法用于向指定元素添加事件句柄。向同一个元素中添加多个事件句柄,addEventListener() 方法允许向同一个元素添加多个事件,且不会覆盖已存在的事件:

向 Window 对象添加事件句柄
window.addEventListener("resize", function(){
    document.getElementById("demo").innerHTML = sometext;
});

document.getElementById("myDiv").addEventListener("click", myFunction, true);
默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递。

创建新的 HTML 元素 (节点) - appendChild(),insertBefore(),removeChild()

var para = document.createElement("p");
var node = document.createTextNode("这是一个新的段落。");
para.appendChild(node);
 
var element = document.getElementById("div1");
element.appendChild(para);

var para = document.createElement("p");
var node = document.createTextNode("这是一个新的段落。");
para.appendChild(node);
 
var element = document.getElementById("div1");
var child = document.getElementById("p1");
element.insertBefore(para, child);

var parent = document.getElementById("div1");
var child = document.getElementById("p1");
parent.removeChild(child);

var myNodeList = document.querySelectorAll("p"); y = myNodeList[1];

[round()](https://www.runoob.com/try/try.php?filename=tryjsref_round)
如何使用 round()。

[random()](https://www.runoob.com/try/try.php?filename=tryjsref_random)
如何使用 random() 来返回 0 到 1 之间的随机数。

[max()](https://www.runoob.com/try/try.php?filename=tryjsref_max)
如何使用 max() 来返回两个给定的数中的较大的数。(在 ECMASCript v3 之前,该方法只有两个参数。)

[min()](https://www.runoob.com/try/try.php?filename=tryjsref_min)
如何使用 min() 来返回两个给定的数中的较小的数。(在 ECMASCript v3 之前,该方法只有两个参数。)

className

var div = document.createElement("div");
div.className = "div1";

2.节点关系

<div id="div1">
    <div id="div2">2</div>
    <div id="div3">3</div>
    <div id="div4">4</div>
</div>
父节点:parentNode
  var child2 = document.getElementById("div2");
   var parent = child2.parentNode;

  子节点:childNodes
    var allChilds = parent.childNodes;

兄弟节点:nextSibling,previousSibling
 var child3 = document.getElementById("div3");
    var next = child3.nextSibling;
    var previous = child3.previousSibling;
    console.log(next); // IE下返回div4,其他返回text
    console.log(previous)  // IE下返回div2,其他返回text

第一个或最后一个子节点:firstChild、lastChild
var child3 = document.getElementById("div3");
    var parent = child3.parentNode;
    var first = parent.firstChild; // IE是div2,其他是text
    var last = parent.lastChild; // IE是div4,其他是text


3.节点操作

appendChild()
var returnNode = someNode.appendChild(someNode.firstChild); // 返回第一个节点
    console.log(returnNode === someNode.firstChild); // false
    console.log(returnNode === someNode.lastChild); // true

insetBefore()

元素选择

  <div id="div1">
        <p id="div2" class="one" name="nameone">2</p>
        <div id="div3">3</div>
        <div id="div4" name="div2">4</div>
    </div>
querySelector、querySelectorAll(IE8及以上)
var special = document.querySelectorAll( "p.warning, p.note" );
var el = document.querySelector( "#main, #basic, #exclamation" );

属性操作

  var div2 = document.getElementById("div2");
    div2.setAttribute("class", "new_class");
    div2.setAttribute("id", "new_id");
getAttribute()
html5里有一个data-*去设置获取元素的自定义属性值。
<div id="div1" data-aa="11">
利用div1.dataset可以获得一个DOMStringMap,包含了元素的所有data-*。
使用div1.dataset.aa就可以获取11的值。
同样,通过设置div1.dataset.bb = "22"就可以设置一个自定义属性值。
在不兼容的浏览器里,就使用getAttribute和setAttribute

    var div1 = document.getElementById("div1");
    var a = null;
    if (div1.dataset) {
        a = div1.dataset.aa;
        div1.dataset.bb = "222";
    } else {
        a = div1.getAttribute("data-aa");
        div1.setAttribute("data-bb", "2222");
    }
    console.log(a);

阻止冒泡

 var div2 = document.getElementById("div2");
    if (div2.addEventListener) {
        div2.addEventListener("click", function(e) {
            e.preventDefault(); // 阻止默认事件
            e.stopPropagation(); // 阻止冒泡
            console.log(e.target.innerHTML);
        }, false);
    } else {
        div2.attachEvent("onclick", function() {
            var e = window.event;
            e.returnValue = false; // 阻止默认事件
            e.cancelBubble = true; // 阻止冒泡
            console.log(e.srcElement.innerHTML);
        });
    }

相关文章

网友评论

      本文标题:原生js的基础方法等三,dom的操作

      本文链接:https://www.haomeiwen.com/subject/eethgctx.html