Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 .replace()用新的DOM元素替换任意文本_Javascript_Jquery_Dom - Fatal编程技术网

Javascript .replace()用新的DOM元素替换任意文本

Javascript .replace()用新的DOM元素替换任意文本,javascript,jquery,dom,Javascript,Jquery,Dom,我在一个div中有一块未标记的文本。我想解析文本并用包含处理程序的新表单元素替换某些关键字。一个例子是,当我看到文本“Date:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu”时,我想用一个新的输入字段替换它,给它一个唯一的id,然后给它附加一个.datepicker()处理程序 给定示例文本: *知识是一种美德,是一种美德,是一种美德,是一种美德。日期:我们的工作时间是最低限度的,我们的工作时间是从我们的共同合同开始的* 我尝试了以下方法: $("#textdiv"

我在一个div中有一块未标记的文本。我想解析文本并用包含处理程序的新表单元素替换某些关键字。一个例子是,当我看到文本“Date:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu”时,我想用一个新的输入字段替换它,给它一个唯一的id,然后给它附加一个.datepicker()处理程序

给定示例文本:

*知识是一种美德,是一种美德,是一种美德,是一种美德。日期:我们的工作时间是最低限度的,我们的工作时间是从我们的共同合同开始的*

我尝试了以下方法:

$("#textdiv").replace(/Date:________/g, "<input type='text' id='textid_123'/>");  
$("#textid_123").datepicker();  
$(“#textdiv”)。替换(/Date:uuuuuuuuuuuuuuuuuuug,”);
$(“#textid_123”).datepicker();
在创建输入框时,它不会附加datepicker()处理程序。这并不让我感到惊讶,我猜JQuery并没有意识到DOM的修改


如果我的“日期”被包装在一个或另一个标签中,这将是微不足道的。有没有办法用JQuery可见的新DOM元素替换纯文本?

未捕获类型错误:$(…)。替换不是函数

您应该替换元素的innerHTML,如下所示:

$("#textdiv").html( 
   $("#textdiv").html().replace(/Date:________/g, "<input type='text' id='textid_123'/>") 
); 

console.log( $('#textid_123') );  // yup, it's there, so .datepicker should work
$(“#textdiv”).html(
$(“#textdiv”).html().replace(/Date:uuuuuuuuuuuuug,”)
); 
console.log($('#textid_123'));//是的,它就在那里,所以日期选择器应该能用
顺便说一句:您在正则表达式中使用了
/g
标志,这意味着您希望替换多个
Date:\uuuuuuuuu
实例。在这种情况下,您不应该在新的输入元素上使用硬编码的
id
,因为id必须是唯一的


未捕获类型错误:$(…)。替换不是一个函数

您应该替换元素的innerHTML,如下所示:

$("#textdiv").html( 
   $("#textdiv").html().replace(/Date:________/g, "<input type='text' id='textid_123'/>") 
); 

console.log( $('#textid_123') );  // yup, it's there, so .datepicker should work
$(“#textdiv”).html(
$(“#textdiv”).html().replace(/Date:uuuuuuuuuuuuug,”)
); 
console.log($('#textid_123'));//是的,它就在那里,所以日期选择器应该能用
顺便说一句:您在正则表达式中使用了
/g
标志,这意味着您希望替换多个
Date:\uuuuuuuuu
实例。在这种情况下,您不应该在新的输入元素上使用硬编码的
id
,因为id必须是唯一的


问题不在于jQuery没有获取内容更改,因为内容在调用
.datepicker
之前就已经更改了。问题是
.replace()
不是有效的jQuery方法。而是像这样替换HTML内容:

var content = $("#textdiv").html().replace(/Date:________/g, "<input type='text' id='textid_123'/>");
$("#textdiv").html(content);
var content=$(“#textdiv”).html().replace(/Date:uuuuuuuug,”);
$(“#textdiv”).html(内容);

然后可以调用其他方法

问题不在于jQuery没有获取内容更改,因为内容是在调用
.datepicker
之前更改的。问题是
.replace()
不是有效的jQuery方法。而是像这样替换HTML内容:

var content = $("#textdiv").html().replace(/Date:________/g, "<input type='text' id='textid_123'/>");
$("#textdiv").html(content);
var content=$(“#textdiv”).html().replace(/Date:uuuuuuuug,”);
$(“#textdiv”).html(内容);

然后可以调用其他方法

请看,那里的共识是“不,他们不应该”!这段代码真的创建了一个输入框吗?jQuery对象没有
replace
方法,因此我无法理解您的代码是如何不产生错误的。您使用的库是否提供了
replace
方法?请参阅,其中的共识是“不,他们不应该”!这段代码真的创建了一个输入框吗?jQuery对象没有
replace
方法,因此我无法理解您的代码是如何不产生错误的。您使用的库是否提供了
replace
方法?