如何用JavaScript将嵌套HTML列表转为缩进纯文本?jQuery方案存问题
解决方法:只在控制台输出时添加缩进,别碰DOM元素
兄弟,你这问题根源就是用prepend(" ")直接修改了页面上的pre.code元素呀!这个操作会把制表符实实在在插到DOM里,而你要的只是在console.log里显示缩进,完全没必要动原元素。
给你改个版本,只在输出的时候把制表符和文本拼在一起,原页面元素啥都不会变:
function serializeCode() { $.each($("pre.code"), function() { if ($(this).parent().parent().hasClass("multiline")) { // 先拿原文本,再拼接制表符输出,绝不修改原DOM console.log(" " + $(this).text()); } }); }
为啥原代码不行?
$(this).prepend(" ")是DOM修改操作,它会把制表符插入到pre.code的内容开头,页面上的元素自然就被改了。而换成字符串拼接的方式,只是在输出到控制台的那一刻给文本加了缩进,原元素的内容完全保持原样,完美符合你的预期。
要是你的pre.code里有换行之类的格式,这种方式也能完整保留,只是开头多了个制表符缩进,正好是你想要的效果~
内容的提问来源于stack exchange,提问作者henriquehbr
相关产品推荐
相关产品推荐

