导出Doc文档时两个<ol>列表被合并的问题求助
解决Doc导出中两个有序列表合并编号的问题
我尝试在Doc导出功能中添加两个
<ol>列表,但它们被合并成了一个。导出后的Doc文档截图显示,第二个列表的编号从d开始,但它本应从a开始。以下是导出功能中包含的HTML代码:
<table width="500px"> <tr> <td><h4><span class="language_l1">{{ $leftdata->title }}</span></h4></td> <td><h4><span class="language_l1">{{ $rightdata->title }}</span></h4></td> </tr> <tr> <td> <ol type="a"> <?php $i=1;?> @foreach($leftdata->options as $key => $value) <li> <span class="language_l1">{!! $value !!} </span> </li> @endforeach </ol> </td> <td> <ol type="a"> <?php $i=1;?> @foreach($rightdata->options as $key => $value) <li>[![enter image description here][1]][1] <span class="language_l1">{!! $value !!} </span> </li> @endforeach </ol> </td> </tr> </table>
这个问题的核心是Word(.doc格式)对HTML有序列表的解析逻辑:即使两个<ol>元素在HTML结构上完全独立(分别在不同的<td>中),Word默认会将它们视为同一个连续列表的一部分,从而延续之前的编号序列。
解决方案:强制列表独立编号
最简单可靠的方法是给每个<ol>标签添加start="1"属性,强制指定列表从第一个编号开始(对应type="a"就是从a开始)。修改后的代码如下:
<table width="500px"> <tr> <td><h4><span class="language_l1">{{ $leftdata->title }}</span></h4></td> <td><h4><span class="language_l1">{{ $rightdata->title }}</span></h4></td> </tr> <tr> <td> <ol type="a" start="1"> <!-- 添加start属性,强制从a开始 --> <?php $i=1;?> @foreach($leftdata->options as $key => $value) <li> <span class="language_l1">{!! $value !!} </span> </li> @endforeach </ol> </td> <td> <ol type="a" start="1"> <!-- 添加start属性,强制从a开始 --> <?php $i=1;?> @foreach($rightdata->options as $key => $value) <li>[![enter image description here][1]][1] <span class="language_l1">{!! $value !!} </span> </li> @endforeach </ol> </td> </tr> </table>
如果start属性偶尔出现兼容性问题,还可以尝试给每个<ol>添加CSS计数器重置:
<ol type="a" style="counter-reset: list-item;">
不过start属性对于Word的HTML解析兼容性更好,是优先推荐的方案。
内容的提问来源于stack exchange,提问作者Hossam Ahmed
相关产品推荐
相关产品推荐

