javascript - innerHTML如何去除缩进
世界只因有你
世界只因有你 2017-06-24 09:43:31
0
2
1023

已解决

各位好:

欲在html中用template标签里面写Markdown,再用jsMarkdown进行处理转换成html,局部dom结构如下:

<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标签有缩进,导致了marked把内容当做段落代码处理:

请问又没法办法清除这些缩进,但是又不影响正常缩进的方式,或者不用template标签的其他方式

世界只因有你
世界只因有你

全部回复(2)
黄舟

给你一个思路,统计每一行前面的空白符,得到一个最小值,再按这个最小值清除

补上代码

document.querySelectorAll('template[type="markdown"]').forEach($template => {
  var lines = $template.innerHTML.split(/\r\n|\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')))
})
仅有的幸福

雷雷

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板