HTML Comments inside Opening Tag of the Element

Solution 1:

HTML comments are not allowed inside tags, start or end, at all.

Solution 2:

Workarounds for comments inside HTML tags

HTML does not allow you to use <!-- and --> to mark comments inside a tag. However there are workarounds for the main use cases.

To add a comment within an HTML tag

You can just make up an attribute that you use just to comment to yourself. For example:

<div comment="Name and Id">
   ... 
</div>

The major downside is that the comments will not be stripped out during minifying, so:

  • it will take up space in your final HTML document served to the user
  • if the user clicks View source they will be able to read your comments

To temporarily disable an attribute

Just rename the attribute with a prefix that you know to indicate temporary disabling. For example, to disable an attribute called option:

<div option="big">
   ... 
</div>

becomes

<div DISABLED-option="big">
   ... 
</div>

Obviously don't do this if there is actually a valid attribute called disabled-option.

To temporarily disable a class or style

Since there is no error message if you use a class or style that doesn't exist, you can do this to disable a class or style:

For example, to disable a class called tall while preserving a class called highlighted:

<div class="highlighted tall">
   ... 
</div>

becomes

<div class="highlighted DISABLED-tall">
   ... 
</div>

Similarly, to disable the color style while preserving the font-weight style:

<div style="font-weight:700; color:red;">
   ...
</div>

becomes

<div style="font-weight:700; DISABLED-color:red;">
   ...
</div>

Again, remember that these won't be stripped out during minifying so they will take up space in the file the end user receives, and will be viewable with View source.

Solution 3:

I have kicked off a standard for structuring HTML comments, called 'HTMLDoc', analogous to JSDoc for Javascript, JavaDoc for Java, etc.

You can read about it here: http://usehtmldoc.surge.sh.

It allows documentation at the tag, attribute and value level.

For your code, it might look something like this:

<!--
@tag option
@attribute disabled Used to disable any particular option
@attribute selected Used to pre-select any particular option
@attribute label Used to provide a short version of the content in the option
@attribute value The actual value that will be send to the server. If omitted the content between the option opening and closing tags will be send.
-->

<option disabled = "disabled"
        selected = "selected"
        label = "string"
        value = "value">
Option 1
</option>