Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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 如何用子元素替换元素中的部分文本?_Javascript_Jquery_Html_String_Replace - Fatal编程技术网

Javascript 如何用子元素替换元素中的部分文本?

Javascript 如何用子元素替换元素中的部分文本?,javascript,jquery,html,string,replace,Javascript,Jquery,Html,String,Replace,我有这个HTML: <div class="test">Orange <span class="is">is</span> my favorite color.</div> 我只想替换橙色和它后面的空格。使用.text将不起作用,因为它会选择整个强文本 如何做到这一点?您应该使用本机DOM方法。在您的例子中,simples只是更改第一个childNode元素的nodeValue属性,您知道该元素将是TextNode元素: var el=$'.t

我有这个HTML:

<div class="test">Orange <span class="is">is</span> my favorite color.</div>
我只想替换橙色和它后面的空格。使用.text将不起作用,因为它会选择整个强文本


如何做到这一点?

您应该使用本机DOM方法。在您的例子中,simples只是更改第一个childNode元素的nodeValue属性,您知道该元素将是TextNode元素:

var el=$'.test'; el[0].childNodes[0].nodeValue='Green';
橙色是我最喜欢的颜色。您应该使用原生DOM方法。在您的例子中,simples只是更改第一个childNode元素的nodeValue属性,您知道该元素将是TextNode元素:

var el=$'.test'; el[0].childNodes[0].nodeValue='Green';
橙色是我最喜欢的颜色。使用jQuery比使用本机DOM更难做到这一点,因此如果使用jQuery,则必须使用jQuery的数组索引将元素转换为本机DOM

基本上,我们需要做的是更改第一个文本节点。jQuery对于文本节点并不太好,这就是我们在这里使用DOM的原因:

//这将使用jQuery获取div.test元素: var testDiv=$div.test; 函数更改颜色{ /*以下函数更改testDiv中第一个文本节点的值:*/ //这会将testDiv从jQuery元素转换为常规DOM元素。这是因为jQuery实际上并不打算处理文本节点之类的内容,所以使用常规DOM进行此操作会简单得多。 var-domElement=testDiv[0]; //现在,只需更改第一个文本节点的值: doElement.childNodes[0].nodeValue=color; } //现在,您可以看到,如果单击div.test,我们可以使用changeColor替换div.test中提到的颜色: testDiv.clickfunction{ 变色蓝; };
橙色是我最喜欢的颜色。使用jQuery比使用本机DOM更难做到这一点,因此如果使用jQuery,则必须使用jQuery的数组索引将元素转换为本机DOM

基本上,我们需要做的是更改第一个文本节点。jQuery对于文本节点并不太好,这就是我们在这里使用DOM的原因:

//这将使用jQuery获取div.test元素: var testDiv=$div.test; 函数更改颜色{ /*以下函数更改testDiv中第一个文本节点的值:*/ //这会将testDiv从jQuery元素转换为常规DOM元素。这是因为jQuery实际上并不打算处理文本节点之类的内容,所以使用常规DOM进行此操作会简单得多。 var-domElement=testDiv[0]; //现在,只需更改第一个文本节点的值: doElement.childNodes[0].nodeValue=color; } //现在,您可以看到,如果单击div.test,我们可以使用changeColor替换div.test中提到的颜色: testDiv.clickfunction{ 变色蓝; };
橙色是我最喜欢的颜色。如果您使用jquery,下面是解决方案

    $('.test').html(function(){
        return $(this).html().replace('Orange ','');
    });
在这里找到小提琴:

使用数据属性优化代码并将其用于多个字符串

HTML:


如果您使用的是jquery,下面是解决方案

    $('.test').html(function(){
        return $(this).html().replace('Orange ','');
    });
在这里找到小提琴:

使用数据属性优化代码并将其用于多个字符串

HTML:


如果要更改橙色,请将其包装为一个空格。为什么不能将其包装为一个空格?我无法更改HTML,这是用于用户脚本的。请尝试.childNodes[0]。代码片段即将出现!这个问题已经被问了很多次。问题表明完全缺乏研究工作将橙色包装在一个文件中如果您想更改它,这会使事情变得更简单。为什么不能将其包装为一个span?我无法更改HTML,这是用于用户脚本的。请尝试.childNodes[0]。代码片段即将出现!这个问题已经被问了很多次。问题表明完全缺乏研究努力如果颜色是绿色怎么办?你能写一个开关箱吗\这解决了这个特殊情况下的问题,但它不是一个通用的解决方案。是的,这只是针对您的问题的解决方案。但是,如果使用数据属性data replace=您的_文本,则可以将此代码用于多个元素。如果颜色是绿色怎么办?你能写一个开关箱吗\这解决了这个特殊情况下的问题,但它不是一个通用的解决方案。是的,这只是针对您的问题的解决方案。但是,如果使用数据属性data replace=您的_文本,则可以将此代码用于多个元素。选择.nodeValue而不是.data有什么原因吗?在DOM2I中,您选择.nodeValue而不是.data有什么原因吗?也在DOM2中
    $('.test').html(function(){
        return $(this).html().replace($(this).data('replace'),'');
    });
document.getElementsByClassName("test")[0].childNodes[0].nodeValue = "Black";