一个关于innerText和innerHTML的小疑问

1.一个很小的问题
2.代码:
对于
图片描述

innerText显示的是文本内容,为什么去更改这个文本内容的时候却是把这个标签组也给删除了?
有句话是:
node.innerText
Sets or gets the text between the start and end tags of the object
另外,有没有其他方法(jquery也可)可以只替换文本内容而不把i标签也删了?

阅读 3.3k
4 个回答

找childNodes把,判断是文本节点看里面有没有类容,有就干掉

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <p onclick="aaa(this)">
        <i>1111</i>
        aaaaaaa
    </p>
    <script>
function aaa(obj){
    for(el of obj.childNodes){
        if(el.nodeType==3&&!!el.nodeValue.replace(/\s+/g,'')){
            console.log(el)
            el.nodeValue = ''
        }
    }
}
    </script>
</body>
</html>

可能没解决你的本质问题,如果想只改变文字,在a标签里文字外面再加上一层span标签不就可以了吗,然后去改soan的内容

好像没有那种方法,给文字加个标签吧

纯文字也是一个节点,你可以遍历通过childNodes属性访问任意一个节点,
判断是否为文字节点,是的话就直接替换节点内容

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题