Bueno... ya va cobrando forma...
Ya admite vocales acentuadas y más de una palabra. Al final de la comprobación hace un recuento de las palabras y te muestra los resultados. Esto se puede cambiar para que en vez de eso muestre un alert diciendo lo que quieras.
También reformatea el texto introducido para que ponga la primera letra de cada palabra en mayusculas y el resto en minúsculas.
Dime que te parece.
Un saludo!
Código PHP:
<html>
<head>
<title>Coherencia</title>
<style>
input{
font:normal 10px/10px verdana;
color:navy;
border:solid 1px black;
}
form{ font:bold 10px/10px verdana;
color:black}
</style>
<script>
var palabra=new Array();
controlDePalabra=new Array()
var laFrase="";
var q=0
var vocales="AEIOUÁÉÍÓÚ";
var consonantes="BCDFGHJKLMNÑPQRSTVWXYZ";
var comprobado;
function comprobarCoherencia(frase){
var control=0;
frase=frase.toUpperCase();
palabra=frase.split(" ");
for (b=0;b<palabra.length;b++){
control=0;
for(a=0;a<palabra[b].length;a++){
comprobado=0;
letra=palabra[b].charAt(a);
if (vocales.indexOf(letra)>-1){
comprobado=1;control+=1
}
if(consonantes.indexOf(letra)>-1){
comprobado=1;control-=1
}
if(comprobado==0){control+=1000}
laFrase+=(a==0)?letra:letra.toLowerCase();
}
laFrase+=" ";
controlDePalabra[b]=control;
}
document.forms[0].elements[0].value=laFrase;
alert("número de palabras: "+palabra.length)
for (a=0;a<palabra.length;a++){
b=a+1;
Mensaje="Palabra número " + b + ": "+palabra[a];
MEnsaje+="\n\n Tiene un control: " + controlDePalabra[a];
if(Math.abs(controlDePalabra[a])>2){
Mensaje+="\nTiene una falta de consistencia";
}
if(palabra[a].length<3){
Mensaje+="\nEs demasiado corta"
}
alert(Mensaje);}}
</script>
</head>
<body>
<form action='javascript:alert("Enviado!")' >
Nombre: <input type="text"><br><br>
<input
type="button"
Value="Comprobar consistencia"
onclick="comprobarCoherencia(document.forms[0].elements[0].value)">
</form>
</body>
</html>