使用javascript将嵌套列表转换为缩进的纯文本

时间:2018-04-21 12:25:22

标签: javascript html nested-lists

我想知道是否有任何方法可以将以下HTML列表转换为缩进的纯文本,我已尝试使用jQuery的以下解决方案(但不幸的是,它为pre.code html添加了一个制表符元素,当它应该只在console.log输出)



    function serializeCode() {
    	$.each($("pre.code"), function() {
    		if ($(this).parent().parent().hasClass("multiline")) {
    			console.log($(this).prepend("\t").text());
    		}
    	});
    }

<style>
    pre.code {display:none}
</style>

    <ul id="list">
    
    	<li>
    		<pre class="visual">Comando 1</pre>
    		<pre class="code">command1</pre>
    	</li>
    
    	<li>
    		<pre class="visual">Comando 2 {</pre>
    		<pre class="code">command2 {</pre>
    
    		<ul class="multiline">
    			<li>
    				<pre class="visual">Comando 3</pre>
    				<pre class="code">command3</pre>
    			</li>
    		</ul>
    
    		<pre class="visual">}</pre>
    		<pre class="code">}</pre>
    	</li>
    
    </ul>
&#13;
&#13;
&#13;

纯文本输出

Comando 1
Comando 2 {
    Comando 3
}

2 个答案:

答案 0 :(得分:0)

我解决了!

  

下面的函数遍历列表中的所有pre.code元素,并在具有\t类的父元素的元素的开头添加制表符(multiline)。 / p>

function serializeCode() {
    console.clear();
    $.each($("pre.code"), function() {
        if ($(this).parent().parent().hasClass("multiline")) {
            console.log("\t" + $(this).text());
        } else {
            console.log($(this).text());
        }
    });
}

答案 1 :(得分:0)

var a = '';
$.each($('.visual'), function () {
a += $(this).text() + '\n';
});
alert(a);