Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
纯JavaScript-在DOM元素中编辑文本而不接触子元素_Javascript - Fatal编程技术网

纯JavaScript-在DOM元素中编辑文本而不接触子元素

纯JavaScript-在DOM元素中编辑文本而不接触子元素,javascript,Javascript,我当前正在尝试编辑单个父元素的所有子元素的文本。结构大致如下: <section id=emoji> <h1>Emojies</h1> <p id=ea1>:-)</p> <p id=ea2>(TM)</p> <p id=ea3>Trademark(TM) <span>:-</span>)</p>

我当前正在尝试编辑单个父元素的所有子元素的文本。结构大致如下:

<section id=emoji>
        <h1>Emojies</h1>
        <p id=ea1>:-)</p>
        <p id=ea2>(TM)</p>
        <p id=ea3>Trademark(TM) <span>:-</span>)</p>
        <p id=ea4>Do you &lt;3 me?</p>
        <p id=ea5>:-):-):-)&lt;3&lt;3&lt;3</p>
</section>

表情符号

:-)

(TM)

商标(TM):-)

你认识我吗

:-):-):-)333

如您所见,第三段标记有一个span标记。我有一个函数,它将接受给定的字符串并将表情符号的所有实例转换为emojify函数中指定的表情符号。我希望动态地对部分中的这些元素执行相同的操作。问题是我不想编辑span,此时,合并span标记将生成一张笑脸,我不想这样做

我的表情符号功能如下所示:

function emojify(str) {
    let emojies = [];
    emojies['(TM)'] = '™️';
    emojies['<3'] = '❤️';
    emojies[':-)'] = 'If you check in the properties of your page (in chrome dev tool, go to element, click on an element and go to view properties in the right side), you can see that there is a 'text' node in each of you  element . In case of the  element whoc has span in it, it will show that there are 3 element - text, span and a text - in it. You can modiy you function to process only teh text nodes in it. 
It would be like

function pageEmojify(selector) {
    let element = document.querySelector(selector);
    element.childNodes.forEach(function(el) {
        ## get child nodes of e
        ## if teh childnode is of type text, then get innertext and pass it to emojify  
    });
}
函数emojify(str){
设emojies=[];
表情符号['(TM)]='™️';

emojies['如果您签入页面的属性(在chrome开发工具中,转到元素,单击元素并转到右侧的查看属性),您可以看到每个元素中都有一个“text”节点。如果元素中有span,它将显示其中有3个元素-text、span和一个text。您可以修改函数以仅处理其中的文本节点。 就像

我在这里给出了伪代码,因为我不是js函数方面的专家。

函数emojify(str){
设emojies=[];
表情符号['(TM)]='™️';

emojies['@nickzoum我该如何编辑我的函数才能做到这一点?