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).