use*_*429 9 html javascript jquery
我在从字符串中删除空格时遇到问题.首先我将div转换text();为删除标签(有效),然后我试图删除 字符串的" "部分,但它不会工作.我知道我做错了什么.谢谢.
newStr = $('#myDiv').text();
newStr = newStr.replace(/ /g,'');
$('#myText').val(newStr);
<html>
<div id = "myDiv"><p>remove space</p></div>
<input type = "text" id = "myText" />
</html>
Run Code Online (Sandbox Code Playgroud)
Den*_*ret 17
当您使用该text函数时,您不会获得HTML而是文本: 实体已更改为空格.
var str = " a b ", // bunch of NBSPs
newStr = str.replace(/\s/g,'');
console.log(newStr)Run Code Online (Sandbox Code Playgroud)
如果要 在转换为文本之前仅替换来自替换的空格:
newStr = $($('#myDiv').html().replace(/ /g,'')).text();
Run Code Online (Sandbox Code Playgroud)
Fab*_*tté 12
.text()/ textContent不包含HTML实体(例如 ),这些实体作为文字字符返回.这是使用非中断空格 Unicode转义序列的正则表达式:
var newStr = $('#myDiv').text().replace(/\u00A0/g, '');
$('#myText').val(newStr);
Run Code Online (Sandbox Code Playgroud)
也可以在正则表达式中使用文字不间断空格字符而不是转义序列,但是在这种情况下我发现转义序列更加清晰.但是,评论不会解决任何问题.
也可以使用.html()/ innerHTML来检索包含HTML实体的HTML,如@Dystroy的答案.
以下是我的原始答案,我误解了OP的用例.我会留在这里,以防任何人需要 从DOM元素的文本内容中删除
[...]但是,请注意,重新设置元素的.html()/ innerHTML意味着删除所有与之关联的侦听器和数据.
所以这里是一个递归解决方案,只改变文本节点的文本内容,而不重新分析HTML或任何副作用.
function removeNbsp($el) {
$el.contents().each(function() {
if (this.nodeType === 3) {
this.nodeValue = this.nodeValue.replace(/\u00A0/g, '');
} else {
removeNbsp( $(this) );
}
});
}
removeNbsp( $('#myDiv') );
Run Code Online (Sandbox Code Playgroud)