JavaScript-DOM-文本节点

JavaScript-DOM-文本节点

文本节点由Text类型表示,具有以下特征:

  • nodeType值为3
  • nodeName值为"#text"
  • nodeValue值为节点所包含的文本
  • parentNode是一个Element(元素)类型节点
  • 不包含子节点

第一步 创建文本节点

之前在DOM增、删、改一篇中已经详细介绍了文本节点搭配元素节点生成相应的显示内容。再来回顾一下如何创建文本节点?使用document对象的createTextNode()方法就可以啦。

document.createTextNode(data)

第二步 查看、替换文本

相关属性表如下:

属性描述
innerHTML返回调用元素包含的所有子节点对应的HTML标记字符串,可以直接赋值替换调用元素所有子节点
outerHTML返回调用元素及所有子节点对应的HTML标记字符串,可以直接赋值替换调用元素及所有子节点
innerText返回指定元素文本内容,可以赋值修改,Firefox不支持
outerText与innerText功能相似,但可以覆盖原有元素
textContent与innerText功能类似

  除了以上属性外,再介绍两个插入文本和元素的方法:insertAdjacentText()方法包含两个参数:第一个表示插入位置,第二个是要插入的文本。insertAdjacentHTML()方法包含两个参数:第一个表示插入位置,第二个是要插入的HTML字符串。两个方法的插入位置必须是下列值之一:

  • “beforebegin”:在当前元素之前插入一个紧邻的同辈元素。
  • “afterend”:在当前元素之后插入一个紧邻的同辈元素。
  • “afterbegin”:在当前元素之下插入一个新的子元素,或在第一个子元素之前再插入新的子元素。
  • “beforeend”:在当前元素之下插入一个新的子元素,或在最后一个子元素之后再插入新的子元素。

第三步 操作文本节点

用下列方法可以操作文本节点中的文本。

  • appendData(string):将字符串string追加到文本节点的尾部。
  • deleteDatal(tart,length):从start下标位置开始删除length个字符。
  • insertData(start,string):在start下标位置插入字符串string。
  • replaceData(start,length,string):使用字符串string替换从start下标位置开始length 个字符。
  • splitText(offset):在offset下标位置把一个Text节点分割成两个节点。
  • substringData(start,length):从start 下标位置开始提取length个字符。

亲自试一试

既要读万卷书,也要行万里路。毕竟实践才是检验真理的唯一标准!

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>DOM-文本节点操作示例</title>
</head>
<script>
    window.onload = function () {
        let ul_one = document.getElementsByTagName('ul')[0];
        let li_four = document.createElement('li');
        // 创建文本节点
        let li_text_four = document.createTextNode('恐惊天上人');
        li_four.appendChild(li_text_four);
        ul_one.appendChild(li_four);
        console.log('打印添加子节点的ul:', ul_one.innerHTML);

        let ul_two = document.getElementsByTagName('ul')[1];
        let lis = ul_two.getElementsByTagName('li');
        lis[0].onclick = function () {
            // innerHTML替换文本内容
            this.innerHTML = '<h3>窗前明月光</h3>';
        }
        lis[1].onclick = function () {
            // outerHTML覆盖元素标签
            this.outerHTML = '<h3>疑是地上霜</h3>';
        }
        lis[2].onclick = function () {
            // innerText在指定元素中插入文本
            this.innerText = '举头望明月';
        }
        lis[3].onclick = function () {
            // outerText覆盖原有元素
            this.outerText = '低头思故乡';
            console.log(ul_two.innerHTML);

        }
        // insertAdjacentText()方法包含两个参数:第一个表示插入位置,第二个是要插入的文本
        ul_one.insertAdjacentText('afterbegin', '夜宿山寺')
        // insertAdjacentHTML()方法包含两个参数:第一个表示插入位置,第二个是要插入的HTML字符串
        ul_two.insertAdjacentHTML('afterbegin', '<li>静夜思</li>')

        let li_one = document.getElementsByTagName('li')[0].firstChild;
        // 访问文本节点包含的文本,可以通过nodeValue和data属性
        console.log(li_one.nodeValue, li_one.data);

        // 操作文本节点
        // appendData(String)
        li_one.appendData(',在文本节点末尾追加');
        // deleteData(start, length);
        // insertData(start, String);
        // replaceData(start, length, String);
        // splitText(offset);
        // substringData(start, length);

    }
</script>
<style>
    ul {
        list-style: none;
    }
</style>

<body>
    <div>
        <ul>
            <li>危楼高百尺</li>
            <li>手可摘星辰</li>
            <li>不敢高声语</li>
        </ul>
        <hr>
        <ul>
            <li>静夜思第一句</li>
            <li>静夜思第二句</li>
            <li>静夜思第三句</li>
            <li>静夜思第四句</li>
        </ul>
    </div>
</body>

</html>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值