使用javascript取消注释HTML代码

时间:2014-02-18 09:13:41

标签: javascript jquery html regex

带有一些注释标签的Html表。我只想取消注释这些标签。我已经尝试使用javascript的正则表达式,但问题是它删除整个注释行,因为我只是想取消注释这些标签。下面带有注释标签的示例html表......

<table>
   <tr>
         <td>ABCD</td>
         <td>Logic</td>
         <!-- <td>26538568</td> -->
   </tr>
</table>

所以在上面的代码中我只想取消注释<!-- <td>26538568<td> -->。 请这是从网页抓取数据的一部分,所以我无法更改html代码。上面提到的表结构类似于我尝试提取数据的网页。

5 个答案:

答案 0 :(得分:13)

您可以使用DOM来完成此操作,而无需将文档视为文本。例如,使用jQuery:

$('table tr')
 .contents()
 .filter(function(){return this.nodeType === 8;}) //get the comments
 .replaceWith(function(){return this.data;})

这里有趣的是.contents,它返回所有节点,而不仅仅是元素 - 这包括文本节点和注释。

工作示例:http://jsfiddle.net/9Z5T5/2/

警告注意:我不确定跨浏览器是怎么回事。具体而言,可能不支持node.data。我已经在Firefox,Chrome和IE 10中测试了这段代码。

答案 1 :(得分:4)

所以你需要找到并替换,例如:

$("body").html($("body").html().replace('<!--', '&lt;!--'));

然后它会显示评论有文字

答案 2 :(得分:1)

有一个非常有用的小jquery插件正是这样做的。我没有写它,但它是开源的,这里是代码&amp;归属于原始来源:

http://vistaprint.github.io/SkinnyJS/jquery.uncomment.html

在我们的网站上运作良好。

Javascript是:

try-except

将代码放入

(function ($) {
    $.fn.uncomment = function () {
        for (var i = 0, l = this.length; i < l; i++) {
            for (var j = 0, len = this[i].childNodes.length; j < len; j++) {
                if (this[i].childNodes[j].nodeType === 8) {
                    var content = this[i].childNodes[j].nodeValue;
                    $(this[i].childNodes[j]).replaceWith(content);
                }
            }
        }
    };
})(jQuery);

并用

调用它
<div class="commented-container">
  <!--
  <script src="some-expensive-widget.js"></script>
  <img src="some-expensive-widget-logo.jpg" />
  -->
</div>

我们正在使用它来推迟/排除移动用户的一些图片密集型图库,以加快页面加载速度。

skinny.js的一部分..你可以在这里找到: http://vistaprint.github.io/SkinnyJS/

答案 3 :(得分:0)

不是你正在使用的正确方法,最好通过将其隐藏并使用方法show使用javascript在屏幕上显示来隐藏该行。 这是正确的代码:

<table>
   <tr>
         <td>ABCD<td>
         <td>Logic<td>
         <td class='td_hide'>26538568<td>
   </tr>
</table>

<style>
   .td_hide{
       display:none;
   }
</style>

如果要通过javascript显示列,请使用:

jQuery('td.td_hide').show();

答案 4 :(得分:-1)

如果你想要

,你可以这样做
<script>
jQuery('td.#hide').show();
</script>

<table>
   <tr>
         <td>ABCD<td>
         <td>Logic<td>
         <td id='hide' style="display:none">26538568<td>
   </tr>
</table>

所以这里最初他们将隐藏td元素,所以如果你想调用添加一个函数并添加上面的jquery来取消隐藏它..

相关问题