javascript - innerHTML如何去除縮進(jìn)
問題描述
已解決各位好:
欲在html中用template標(biāo)簽里面寫Markdown,再用js對Markdown進(jìn)行處理轉(zhuǎn)換成html,局部dom結(jié)構(gòu)如下:
<p class='content'> <template type='markdown'> Welcome ==== My name is Hung </template></p><script type='text/javascript'> document.addEventListener(’DOMContentLoaded’ ,function (event){ var $templates = document.querySelectorAll(’template[type='markdown']’) $templates.forEach(function ($template){ console.log(marked($template.innerHTML)); }) })</script>
但是因為template標(biāo)簽有縮進(jìn),導(dǎo)致了marked把內(nèi)容當(dāng)做段落代碼處理:
請問又沒法辦法清除這些縮進(jìn),但是又不影響正常縮進(jìn)的方式,或者不用template標(biāo)簽的其他方式
問題解答
回答1:給你一個思路,統(tǒng)計每一行前面的空白符,得到一個最小值,再按這個最小值清除
補(bǔ)上代碼
document.querySelectorAll(’template[type='markdown']’).forEach($template => { var lines = $template.innerHTML.split(/rn|n/) var trimLen = lines.reduce((minLen, line) => { var len = (/S/.exec(line) || {index: 0}).index if (len < minLen) { return len } return minLen }, Infinity) if (trimLen > 0) { lines = lines.map(line => line.slice(trimLen)) } console.log(marked(lines.join(’n’)))})回答2:
document.querySelectorAll(’template[type='markdown']’).forEach(($template) => { let lines = $template.innerHTML.split(’n’) let linesNum = lines.length if (linesNum > 0){ !!/^s*$/.test(lines[0]) && lines.shift() !!/^s*$/.test(lines[linesNum-1]) && lines.pop() } let markdown = lines.map(line => line.substring(Math.min(...lines.map(line => line.match(/^s*/)[0].length)))).join(’n’) $template.parentElement.innerHTML = marked(markdown)})
相關(guān)文章:
1. node.js - vue搭建環(huán)境- vue init webpack my-project無響應(yīng)2. css - 包裹img的a標(biāo)簽為什么不和img元素一樣大3. html - 圖片的左上角顯示 【推薦】、【熱銷】標(biāo)簽的效果,使用Css 如何實現(xiàn)呢?4. php怎么用isMobile()函數(shù)識別pc端移動端自動跳轉(zhuǎn)5. python - flask template中url_for都指向了404頁面?6. html - css3 animation的問題.我也不知道如何描述7. 用python3的smtplib庫發(fā)郵件一直返回?zé)o法發(fā)送郵件提示,是什么原因?8. css3 flex三欄布局疑問9. linux - python 安裝 Anaconda 環(huán)境變量問題請教10. 樣式操作.css()
