eas*_*ndr 12 html javascript jquery dom
到目前为止我理解在Jquery中,使用html()函数,我们可以将HTML转换为文本,例如,
$("#myDiv").html(result);
Run Code Online (Sandbox Code Playgroud)
将"result"(即html代码)转换为普通文本并将其显示在myDiv中.
现在,我的问题是,有没有办法可以简单地转换html并将其放入变量?
例如:
var temp;
temp = html(result);
Run Code Online (Sandbox Code Playgroud)
这样的事情,当然这不起作用,但是如何将转换成变量而不将其写入屏幕?因为我正在检查循环中的转换,所以如果继续将它写入屏幕中的每一个循环,那就认为这是浪费资源.
编辑:
遗憾的混乱,例如,如果结果是" <p>abc</p> "然后$(#mydiv).html(result)使mydiv显示"abc",其通过去除的HTML"转换"到正常的文本<p>标签.那么如何"abc"在不做类似事情的情况下放入变量var temp=$(#mydiv).text()呢?
这是无 jQuery 解决方案:
function htmlToText(html) {
var temp = document.createElement('div');
temp.innerHTML = html;
return temp.textContent; // Or return temp.innerText if you need to return only visible text. It's slower.
}
Run Code Online (Sandbox Code Playgroud)
在 IE 中运行良好?9。
不,该html方法不会将HTML代码转换为文本,而是将HTML代码转换为DOM元素.浏览器将解析HTML代码并从中创建元素.
您不必将HTML代码放入页面以将其解析为元素,您可以在独立元素中执行此操作:
var d = $('<div>').html(result);
Run Code Online (Sandbox Code Playgroud)
现在你有了一个jQuery对象,它包含一个div元素,该元素将解析后的HTML代码中的元素作为子元素.要么:
var d = $(result);
Run Code Online (Sandbox Code Playgroud)
现在您有一个jQuery对象,其中包含已解析的HTML代码中的元素.
您可以简单地去除所有 HTML 标签:
var text = html.replace(/(<([^>]+)>)/g, "");
Run Code Online (Sandbox Code Playgroud)
你可以试试:
var tmp = $("<div>").attr("style","display:none");
var html_text = tmp.html(result).text();
tmp.remove();
Run Code Online (Sandbox Code Playgroud)
但用正则表达式修改字符串的方式更简单,因为它不使用DOM遍历。
您可以使用正则表达式将 html 替换为文本字符串,就像 user 的回答一样Crozin。
PS<br>您也可能喜欢用换行符替换的
方式:
var text = html.replace(/<\s*br[^>]?>/,'\n')
.replace(/(<([^>]+)>)/g, "");
Run Code Online (Sandbox Code Playgroud)