webAPI中关于textContent的兼容性问题

本文介绍了一种简化DOM操作的方法,通过定义自定义函数my$()来替代document.getElementById(),并实现了兼容不同浏览器的innerText和textContent读取及设置功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态页面

<body>
<input type="button" value="设置" id="btn">
<div id="div1">哈哈</div>
</body>

在项目中新建一个名为comment.js文件,并定义一个通过id选择器获取元素的方法。

function my$(id){
    return document.getElementById(id);
}

将comment.js文件引入当前页面中,在此页面中通过id获取元素就可以不用写document.getElementById(“元素id名”),直接调用my$(“元素id名”)的方法

<script src="comment.js"></script>
<script>
    //innerText  谷歌 火狐 ie都支持
    // my$("btn").onclick=function () {
    // console.log(my$("div1").innerText);
    //textContent  谷歌 火狐 支持 ie8不支持
   // console.log(my$("div1").textContent)
   // my$("div1").textContent="这是改变了的div"
    // }

    //textContent在ie8返回的是undeFined;
    //判断这个属性的值如果是undefined,说明这个浏览器不支持
    
    //兼容代码
    //获取任意标签中间的文本内容,需要返回值
    function getInnerText(elelment) {
        //判断类型
        if (typeof elelment.textContent=="undefind") {
            //不支持
            return elelment.innerText;
        }
        else {
            return elelment.textContent;
        }
    }

    //测试
    my$("btn").onclick=function () {
        console.log(getInnerText(my$("div1")));
    }

  // 设置任意标签中间的文本内容, 需要返回值
    //  形参: 操作的元素,  设置的内容
    //方法一
    function setInnerText(element,text) {
        //判断类型
        // if (typeof elelment.textContent=="undefind") {
        //     //不支持
        //     elelment.innerText=text;
        // }
        // else {
        //     elelment.textContent=text;
        // }

        //方法二..................................................

        if (element.textContent) {
        //如果有值,用textContent设置
            element.textContent=text;
        }
        else {
        //不支持
            element.innerText=text;
        }
    }

    //测试
 my$("btn").onclick=function () {
        console.log(getInnerText(my$("div1")));
        setInnerText(my$("div1"),"哈哈")
    } 

</script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值