0

This code is not working, although it seems correct to me. Can you please tell me what's the issue?

<style>
    #101{
        width:1em;
        height:1em;
        padding:1em;
        margin: 1em;
        background-color: green;
        color:red;
    }
</style>
<div class="animation" id="animation">hii</div>
<script>
    document.getElementById('animation').id='101';
</script>
Pavel Vladov
  • 4,707
  • 3
  • 35
  • 39
user12449933
  • 170
  • 1
  • 6

2 Answers2

2

An ID in a selector cannot start with a number:

4.1.3 Characters and case

In CSS, identifiers (including element names, classes, and IDs in selectors) can contain only the characters [a-zA-Z0-9] and ISO 10646 characters U+00A0 and higher, plus the hyphen (-) and the underscore (_); they cannot start with a digit, two hyphens, or a hyphen followed by a digit. Identifiers can also contain escaped characters and any ISO 10646 character as a numeric code (see next item). For instance, the identifier "B&W?" may be written as "B\&W\?" or "B\26 W\3F".

You could get around that by writing the selector like this #\31 01, but that is not really recommended (31 is the hexadecimal representation of the character 1):

<style>
     #\31 01{
        width:1em;
        height:1em;
        padding:1em;
        margin: 1em;
        background-color: green;
        color:red;
    }
</style>
<div class="animation" id="animation">hii</div>
<script>
    document.getElementById('animation').id='101';
</script>

So it is better to prefix the ID with some letters.

t.niese
  • 39,256
  • 9
  • 74
  • 101
  • @TemaniAfif `they cannot start with a digit, two hyphens, …` – t.niese Jun 24 '20 at 08:21
  • ok missed that sentence because In my mind it's valid to start with number since we need to make a difference between the Spec defining the ID inside the HTML doc (https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) and how to write the selector (the Spec your refering). So it's only invalid to start with a number when writing the selector but it's possible to have number inside the attribute. Many will confuse between both (It was the case for me for a while) – Temani Afif Jun 24 '20 at 08:26
1

CSS Selectores can't start with a number.

<style>
    #hundred10{
        width:1em;
        height:1em;
        padding:1em;
        margin: 1em;
        background-color: green;
        color:red;
    }
</style>
<div class="animation" id="animation">hii</div>
<script>
    document.getElementById('animation').id='hundred10';
</script>
Reyno
  • 6,119
  • 18
  • 27