Html tables with some commented tags. i just wanted to uncomment those tags. I have tried regex using javascript but problem is it removes entire commented line where as i just wanted to uncomment those tags. Below sample html table with commented tags...
<table>
<tr>
<td>ABCD</td>
<td>Logic</td>
<!-- <td>26538568</td> -->
</tr>
</table>
So in above code i just want to uncomment <!-- <td>26538568<td> -->
.
Please this is part of data scraping from webpage, so i cannot change the html code. Above mentioned table structure is similar to web page from where i am trying extract the data.
Select html code => Use Ctrl+K to comment or uncomment.
If you select a block of code and use the key sequence Ctrl+K+C, you'll comment out the section of code. Ctrl+K+U will uncomment the code.
Multiline (Block) Comments Javascript multiline comments, also known as block comments, start with a forward slash followed by an asterisk (/*) and end with an asterisk followed by a forward slash (*/). They do not require a comment delimiter character on every line and may contain newlines.
Yes, it is considered as a best practice, since this is to save our code from a browser that does not support JavaScript. The comment ends with a "//-->". Here "//" signifies a comment in JavaScript, so we add that to prevent a browser from reading the end of the HTML comment as a piece of JavaScript code.
There's a very useful little jquery plugin that does precisely this. I didn't write it, but it's open source and here's the code & attribution to original source:
http://vistaprint.github.io/SkinnyJS/jquery.uncomment.html
Works well on our site.
Javascript is:
(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);
Just put your code into
<div class="commented-container">
<!--
<script src="some-expensive-widget.js"></script>
<img src="some-expensive-widget-logo.jpg" />
-->
</div>
and call it with
$(".commented-container").uncomment();
We're using it to defer/exclude some image-heavy galleries for mobile users, to speed the page loads.
Part of skinny.js.. which you can find here: http://vistaprint.github.io/SkinnyJS/
You can do it by using the DOM, without treating the document as text. For example, using jQuery:
$('table tr')
.contents()
.filter(function(){return this.nodeType === 8;}) //get the comments
.replaceWith(function(){return this.data;})
The interesting bit here is .contents
, which returns all nodes, not just the elements - this includes text nodes and comments.
Working example: http://jsfiddle.net/9Z5T5/2/
Cautionary Note: I'm not sure how cross-browser is this. Specifically, it is possible node.data
isn't supported. I've tested this code in Firefox, Chrome, and IE 10.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With