HTML / Javascript:显示:无复制和粘贴问题

时间:2013-10-07 15:23:00

标签: javascript html

我已经阅读了很多关于这个主题的帖子,但没有找到解决我特定情况的方法。也许没有人,但我想我会问。

我有一个来自powershell脚本的HTML生成的报告,它被转储到服务器上的文件夹(不是WEBSERVER,所以没有PHP或任何有趣的东西可用)

然后可以按错误类型或信息过滤报告。这是通过显示来完成的:没有各种元素,无论是tr还是div .. Javascript下面

这些过滤器可以隐藏各种各样的东西,使不同元素的数百种可能组合成为可能。所以移动它们或使用DOM删除和创建它们会很粗糙,因为我不知道如何告诉它在哪里放回元素。

我需要这样做才能将过滤后的报告复制粘贴到电子邮件中发送出去。任何想法?

    function showhide(button) {
        if (button.value == 'hide') {
            var arr = document.getElementsByName(button.name +'tr');
            var length = arr.length;
            for (var i = 0; i < length; i++) {
                arr[i].style.display = 'none';
            }
            document.getElementById(button.name +'div').innerHTML = "<a href='javascript:void(0)' onclick='showhide(this)' name='" + button.name  + "' value='show'>Show " + button.name  + "</a>";
        }
        else if (button.value == 'show') {
            document.getElementById(button.name +'div').innerHTML = "<a href='javascript:void(0)' onclick='showhide(this)' name='" + button.name  + "' value='hide'>Hide " + button.name  + "</a>";
            var arr = document.getElementsByName(button.name  +'tr');
            var length = arr.length;
            for (var i = 0; i < length; i++) {
                arr[i].style.display = '';
            }
        }
    }

解决方案:

function showhide(button) {
        var seeMe = document.getElementById('visible');
        seeMe.innerHTML = ' ';
        if (button.value == 'hide') {
            var arr = document.getElementsByName(button.name +'tr');
            var length = arr.length;
            for (var i = 0; i < length; i++) {
                arr[i].style.display = 'none';
                arr[i].name = 'h';
            }
            document.getElementById(button.name +'div').innerHTML = "<a href='javascript:void(0)' onclick='showhide(this)' name='" + button.name  + "' value='show'>Show " + button.name  + "</a>";
        }
        else if (button.value == 'show') {
            document.getElementById(button.name +'div').innerHTML = "<a href='javascript:void(0)' onclick='showhide(this)' name='" + button.name  + "' value='hide'>Hide " + button.name  + "</a>";
            var arr = document.getElementsByName(button.name  +'tr');
            var length = arr.length;
            for (var i = 0; i < length; i++) {
                arr[i].style.display = '';
                arr[i].name = 's';
            }
        }
        var search = document.getElementById('hidden').children;
        for(var i = 0; i < search.length; i++) {
            seeMe.appendChild(search[i].cloneNode(true));
        }
        var paras = document.getElementById('visible').getElementsByTagName('*');
        for(var i = 0; i < paras.length; i++) {
            if (paras[i].name == 'h') {
                paras[i].parentNode.removeChild(paras[i]);
                i--
            }
        }
  }

1 个答案:

答案 0 :(得分:1)

首次应用任何过滤器时,将页面中的所有HTML元素复制到文档片段对象中,在那里操纵它们的可见性,然后仅将可见对象复制回DOM。更改过滤器将应用于片段中,然后复制回来。