从Word Doc创建的HTML中删除空白区域

时间:2016-06-20 12:04:13

标签: javascript html

我正在尝试从Word文档创建的HTML文件中删除空白区域(导出为HTML),但我仍然不成功。
例如:

Orders = new ObservableCollection<Order>(orderService.GetAllOrders()
                                          .SelectMany(x => x.Dispatches)
                                          .SelectMany(x => x.DispatchDetails)
                                          .ToList()
                                        );

我尝试了CSS选择器<p dir="ltr" class="pt-ListParagraph"> <span class="pt-000003"> </span></p> <p dir="ltr" class="pt-Normal-000001"> <span class="pt-DefaultParagraphFont-000002">Work Instruction</span></p> <p dir="ltr" class="pt-Normal"> <span class="pt-000000"> </span></p> <p dir="ltr" class="pt-Normal"> <span class="pt-DefaultParagraphFont">DEFINITIONS AND ACRONYMS</span></p> <p dir="ltr" class="pt-BodyText"><span class="pt-000004"> </span></p> <p dir="ltr" class="pt-Normal-000005"> <span class="pt-DefaultParagraphFont-000006">DO Brief </span> <span class="pt-DefaultParagraphFont-000007"> </span> p span:empty,但这不起作用,因为它看到了p span:blank之间的空白区域。我已经尝试过从这个帖子标题生成的选项不成功(jQuery不是一个选项) - 我不知所措。我想在HTML的头部添加一个<span class="pt-000000"> </span>文件,以便在页面加载时运行,该文件将删除Word Doc转换为HTML时生成的所有空格(.js)文件。有人能给我一些建议吗?

删除跨度是一种选择。但是,每次跨度类都会有所不同,具体取决于Word Doc的导出,要求我创建几个span.classes。我已经考虑过了,但认为这只是一个创可贴的助推器。

更新 <span class="pt-000000"> </span>做了诀窍:

&#13;
&#13;
window.addEventListener
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

使用 querySelectorAll() getElementsByTagName() 获取所有范围,然后使用 Array#forEach 对其进行迭代并使用 remove() 方法根据内容删除。

Array.from(document.querySelectorAll('span')).forEach(function(ele) {
  if (!ele.textContent.trim()) ele.remove();
});

// or 

[].slice.call(document.querySelectorAll('span')).forEach(function(ele) {
  if (!ele.textContent.trim()) ele.remove();
});
<p dir="ltr" class="pt-ListParagraph">
<span class="pt-000003"> </span></p>
<p dir="ltr" class="pt-Normal-000001">
<span class="pt-DefaultParagraphFont-000002">Work Instruction</span></p>
<p dir="ltr" class="pt-Normal">
<span class="pt-000000"> </span></p>
<p dir="ltr" class="pt-Normal">
<span class="pt-DefaultParagraphFont">DEFINITIONS AND ACRONYMS</span></p>
<p dir="ltr" class="pt-BodyText"><span class="pt-000004"> </span></p>
<p dir="ltr" class="pt-Normal-000005">
<span class="pt-DefaultParagraphFont-000006">DO Brief        </span>
<span class="pt-DefaultParagraphFont-000007">   </span>

remove()方法仅适用于最新浏览器,因此请使用以下代码。

ele.parentNode.removeChild(ele);

答案 1 :(得分:1)

您可以使用getElementsByTagName检索HTML文件中所有span元素的列表。然后遍历每个span元素并检查它是否只包含空格。如果是,请将该范围的innerHTML设置为空字符串。

示例:

var spans = document.getElementsByTagName('span');
for (var i = 0; i < spans.length; i++) {
    if (spans[i].innerHTML.trim() == '') {
        spans[i].remove();
    }
}

更新示例:

window.addEventListener('load', function() {
    var spans = document.getElementsByTagName('span');
    for (var i = 0; i < spans.length; i++) {
        if (spans[i].innerHTML.trim() == '') {
            spans[i].remove();
        }
    }
});

答案 2 :(得分:0)

class {display:none; }? 要么 class {content:'';也许?