美文网首页
js初识第四节

js初识第四节

作者: An的杂货铺 | 来源:发表于2019-08-03 16:12 被阅读0次

原生js删除dom节点

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>

<ul id="oul">

<li>123</li>

<li>123</li>

<li>123</li>

</ul>

<button id="btn">删除ul</button>

</body>

<script type="text/javascript">

//原生js删除dom节点

var btn = document.getElementById('btn');

var oul = document.getElementById('oul');

btn.onclick = function(){

oul.remove();

}

</script>

</html>

原生js动态创建一个表格的,并对其进行封装便于以后复用

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>

<input type="text" name="" id="hang"><span>行</span>

<input type="text" name="" id="lie"><span>列</span>

<button id="btn">点击创建</button>

<div id="outer">

</div>

</body>

<script type="text/javascript">

function $(id){

return document.getElementById(id);

}

$('btn').onclick = function(){

        createdtb();

}

//创建表格的函数

function createdtb(){

var h = $('hang').value;

var l = $('lie').value;

//创建表格主体

var tableone = document.createElement('table');

tableone.style.width = '300px';

tableone.style.height = '300px';

tableone.border = 1;

//创建表格的行

for(var i = 0;i<h;i++){

var trs = document.createElement('tr');

//为行创建列

for(var j = 0;j<l;j++){

var tds = document.createElement('td');

trs.appendChild(tds);

}

//为每一行单独再追加一列

var tda = document.createElement('td');

tda.innerHTML = "<a href='javascript:;'>删除</a>"

tda.style.textAlign = 'center';

trs.appendChild(tda);

tableone.appendChild(trs);

}

//将创建的表格添加进div

$('outer').appendChild(tableone);

      //为所有的删除标签添加事件

      var as = document.getElementsByTagName('a');

        for(var i=0; i<as.length; i++) {

                as[i].onclick = function() {

                if (confirm("你确定删除么?")) {

                // 删除当前a元素所在行

                this.parentNode.parentNode.remove();//删除当前所在的行

                if(tableone.children.length == 0){

                                tableone.remove();

                                //当删掉最后一行的时候整个表格也被移除掉

                }

                    }

                }

                }

}

//对以上函数进行封装一下

function addtable(h,l){

var tableone = document.createElement('table');

tableone.style.width = '300px';

tableone.style.height = '300px';

tableone.border = 1;

//创建表格的行

for(var i = 0;i<h;i++){

var trs = document.createElement('tr');

//为行创建列

for(var j = 0;j<l;j++){

var tds = document.createElement('td');

trs.appendChild(tds);

}

//为每一行单独再追加一列

var tda = document.createElement('td');

tda.innerHTML = "<a href='javascript:;'>删除</a>"

tda.style.textAlign = 'center';

trs.appendChild(tda);

tableone.appendChild(trs);

}

//将创建的表格添加进div

document.body.appendChild(tableone);

      //为所有的删除标签添加事件

      var as = document.getElementsByTagName('a');

        for(var i=0; i<as.length; i++) {

                as[i].onclick = function() {

                if (confirm("你确定删除么?")) {

                // 删除当前a元素所在行

                this.parentNode.parentNode.remove();//删除当前所在的行

                if(tableone.children.length == 0){

                                tableone.remove();

                                //当删掉最后一行的时候整个表格也被移除掉

                }

                    }

                }

                }

}

addtable(5,5);

</script>

</html>

创建文本节点和节点的克隆

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>

<div></div>

<ul>

<li><span onclick="alert('123')">123</span></li>

</ul>

</body>

<script type="text/javascript">

//创建文本节点

var otext = document.createTextNode("<h1>一盒文本</h1>");

var odiv = document.querySelector('div');

odiv.appendChild(otext);//动态添加文本节点

//odiv.innerText = "<h1>123</h1>" //把标签当成文本来对待

odiv.innerHTML =  "<h1>123</h1>" //当标签来处理

//对于一个节点来进行复制

    var oli = document.querySelector('li');

    var oliobe = oli.cloneNode(true);

    var olio = oli.cloneNode(false);

    console.log(oliobe);

    console.log(olio);

    document.querySelector('ul').appendChild(oliobe);

    //node.cloneNode() 对一个节点进行复制,设置为 true,克隆节点及其属性,以及后代;若为false那么则只复制当前节点

</script>

</html>

一个clone节点应用的实例

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>

<table border="1" id="tb">

<tr>

<td><input type="checkbox"></td>

<td>姓名</td>

<td>性别</td>

<td>年龄</td>

</tr>

</table>

    姓名:<input type="text" id="userName" />

    性别: <input type="radio" name="sex" id="d" />男

    <input type="radio" name="sex" />女

    年龄: <input type="text" name="" id="age" />

    <input type="button" id="saveBtn" value="保存" />

</body>

<script type="text/javascript">

function $(id){

return document.getElementById(id);

}

$('saveBtn').onclick = function(){

var trs = $('tb').children[0].children[0].cloneNode(true);

trs.children[1].innerText = $('userName').value;

var sex = $('d').checked?"男":"女";

trs.children[2].innerText = sex;

trs.children[3].innerText = $('age').value;

$('tb').appendChild(trs);

}

</script>

</html>

文档碎片

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>

<script type="text/javascript">

    // 页面放置500个p元素  '我爱你'

    // for(var i=0; i<1500; i++) {

    // var oP = document.createElement("button");

    //        oP.innerHTML = "我爱你";

    //        document.body.appendChild(oP);

    // }

    // var str = "";

    // for(var i=0; i<1500; i++) {

    // str += "<button>我爱你</button>";

    // }

    // // 一次添加到body

    // document.body.innerHTML = str;



        //创建缓存

        var cache = document.createDocumentFragment();

        for(var i=0; i<1500; i++) {

        var btn = document.createElement("button");

        btn.innerHTML = "我爱你";

        cache.appendChild(btn);

        }

        document.body.appendChild(cache);

        // 当我们要想document中添加大量DOM节点时,如果循环插入,会出现明显的性能问题。我们也可以创建个新节点,比如说div,然后将div一次性插入document中,但是这样会多加一层div,而文档碎片(DocumentFragment)不会产生这种节点。



</script>

</body>

</html>

相关文章

  • js初识第四节

    原生js删除dom节点 原生js动态创建一个表格的,并对其进行封装便于以后复用 创建文本节点和节点的克隆 一个cl...

  • ## JS初识

    ## JS初识 # js初识 # js注释 # 变量 # 变量的命名 JS数值的类型 # Number类型 # S...

  • Python小白学习进行时---js基础(2018-7-13)

    一、JS初识 二、JS语法 三、运算符 四、分支结构 ==============================...

  • js初识

    js核心:ECMAScript——ES:基础语法DOM:文档对象模型BOM:浏览器对象模型 js特点:(1)脚本语...

  • JS初识

    js是脚本语言 一种简单弱类型语言 一种解释性执行的脚本语言 一种基于对象的脚本语言 一种相对安全的脚本语言 一种...

  • 初识JS

    1.CSS和JS在网页中的放置顺序是怎样的? css使用link标签引入并放在head标签内,是为了防止白屏和FO...

  • 初识JS

    CSS和JS在网页中的放置顺序是怎样的? css是使用link的标签进行引入并放置在header标签内,而js是使...

  • 初识JS

    1.CSS和JS在网页中的放置顺序是怎样的? CSS引用外部样式表时,使用 标签,将样式放在 标签中;直接在htm...

  • 初识JS

    1、js javascript : 脚本语言,用来实现网页交互、动态效果的,是一种弱类型语言。 2、事件 事件:就...

  • JS初识

    初识javascript 引导 主要内容: 学习目标: 节数知识点要求 第一节(js的前世今生)js简介了解 第二...

网友评论

      本文标题:js初识第四节

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