Hola otra vez:
Sin duda split es en mi opinión la forma más apropiada de obtener cadenas separadas por espacios.
El tema de la complicación, supongo que si se quisiera modificar más cosas se complicaría un poco más...
Voy a ver si hago algo similar pero modificando más cosas...
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
<style>
.azul {color: blue;}
.cursivo {font-style: oblique;}
.subrayado {text-decoration: underline;}
</style>
<script>
String.prototype.trim = function() {
var texto = this;
while(texto.indexOf(" ") != -1) texto = texto.split(" ").join(" ");
if (texto.charAt(0) == " ") {texto = texto.substring(1, texto.length);}
//window.status = texto;
return texto;
}
function alternar(id, clase) {
var elemento = document.getElementById(id);
clases = elemento.className;
if (clases.indexOf(clase) == -1) {elemento.className = (clases + " " + clase).trim();}
else {
elemento.className = clases.split(clase).join(" ").trim();}
}
</script>
</head>
<body>
<div align=center>
<h3 id="elTexto" class="azul cursivo">
... Prueba: aplicación de 2 estilos ...
</h3>
<form>
<fieldset style="display: inline"><legend>clases cambiantes</legend>
azul: <input type="checkbox" checked onclick="alternar('elTexto', 'azul')" />
cursiva: <input type="checkbox" checked onclick="alternar('elTexto', 'cursivo')" />
subrayado: <input type="checkbox" onclick="alternar('elTexto', 'subrayado')" />
</fieldset>
</form>
</div>
</body>
</html>
Este código alterna los estilos con checkboxes.
Saludos