Ciao, innerHTML ti restituisce una stringa; ma tu non puoi applicare uno stile, o quello che è, ad una stringa in quel modo. Dovrai piuttosto applicarlo ad un reale elemento del DOM, ad esempio uno <span>. In tal caso dovrai aggiungerlo andando a ricostruire opportunamente il contenuto da passare, ad esempio, alla stessa proprietà innerHTML.

Una cosa del genere:
codice:
<!DOCTYPE HTML>
<html>
  <head>
    <title>Esempio</title>
    <meta charset="utf-8">
  </head>
  <body>
    <div id="frase">la giornata e troppo breve</div>
  </body>
  <script type="text/javascript">
    var elemento = document.querySelector("#frase");
    var frase = elemento.innerHTML;
    elemento.innerHTML = frase.slice(0,-3)+"<span style='background:yellow;'>"+frase.slice(-3)+"</span>";
  </script>
</html>
Chiaramente si può fare in svariati altri modi.

Fai attenzione però che innerHTML ti restituisce il codice sorgente, in forma testuale, che è contenuto in tale elemento; per cui potrebbe capitare di avere degli altri tag al suo interno, e non solo del testo; in tal caso questo metodo potrebbe fallire restituendo magari dei tag troncati e sfasciando quindi il markup con risultati imprevedibili.

Chiaro che in questo semplice esempio c'è solo del testo e il tutto funziona come ci si aspetta.





PS: occhio a come posti il codice sul forum, il moderatore di turno non ci metterà molto a bastonarti. Vedi come postare il codice sul regolamento di sezione (discussione in evidenza).