Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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_Css - Fatal编程技术网

Javascript 将部分文本换行到新元素标记中

Javascript 将部分文本换行到新元素标记中,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我将一个文本放入标记中。我希望将该文本的一部分包装到另一个元素标记中,该标记的ID不在基本HTML代码中。 由于我无法修改基本HTML代码,因此我不得不使用JavaScript/JQuery来进行修改 我有以下HTML代码: <span id="my_span">John<input type="hidden" name="firstname" value="John" id="my_input1"> <br>Smith<input type="hidd

我将一个文本放入
标记中。我希望将该文本的一部分包装到另一个元素标记中,该标记的ID不在基本HTML代码中。 由于我无法修改基本HTML代码,因此我不得不使用
JavaScript/JQuery
来进行修改

我有以下HTML代码:

<span id="my_span">John<input type="hidden" name="firstname" value="John" id="my_input1">
<br>Smith<input type="hidden" name="lastname" value="Smith" id="my_input2">
</span>
听起来很简单,但我没能做到

我以后需要将这些新添加的ID作为其他目标


感谢您的回复。

使用jquery的
.contents()
获取您的
的内容。然后只过滤到文本节点(节点类型为3)。然后循环遍历每一个,并用一个
”)将其包装起来;
}
});
});

约翰

史密斯
默认情况下,在文本周围有另一个带有已知ID的
元素

<span id="name_1">John</span>
约翰
现在动态更改元素类型

var currentText = $("#name_1").innerHTML;
 $("#name_1").replaceWith('<a id="dynamic_1">' + currentText + '</a>');
var currentText=$(“#name_1”).innerHTML;
$(“#name_1”)。替换为(“”+currentText+“”);
如果有一系列这样的输入,可以在循环中更改id中的索引后缀

尝试使用
.map()
Array.prototype.forEach()
.html()
.replace()

$(“#我的跨度”).map(函数(){
//拆分“#my_span`”的新行字符。textContent`
var txt=this.textContent.split(“\n”).filter(布尔值);
//迭代每个文本`
forEach(函数(val,index){
$(this).html(函数(\ux,html){
//将'val'替换为'a'元素
返回html.replace(val,$(“”){
“文本”:txt[索引],
“id”:“添加了标签”+(索引+1),
“href”:“#”
})[0]。outerHTML)
})
}.绑定(本)
})

约翰

史密斯
这项功能非常有效。非常感谢你的帮助!
var currentText = $("#name_1").innerHTML;
 $("#name_1").replaceWith('<a id="dynamic_1">' + currentText + '</a>');