JavaScript - Contador de palabras

 
Vista:

Contador de palabras

Publicado por HectorQueen (5 intervenciones) el 02/05/2015 02:30:54
Hola, amigos del foro. Soy nuevo en esto y estoy atascado, necesito una ayudita. He probado de todo y no lo consigo. Se trata de un contador de palabras con función de cálculo de precio. Ahora mismo he conseguido calcular un precio a partir de un número dado de palabras, pero lo que quiero hacer es aplicar descuentos a ese resultado en función de la cantidad de palabras. Lo he intentado con operadores condicionales, pero creo que no domino la sintaxis. En concreto, necesito configurar el código para aplicar diferentes descuentos: si el resultado es superior a 40.000 palabras, 10% de descuento, si el resultado es superior a 80.000 palabras, 15% de descuento, etc. El código que tengo es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<form method="POST" name="wordcount">
  <script language="JavaScript">
function countit(){
 
var formcontent=document.wordcount.wordcount2.value
formcontent=formcontent.split(" ")
document.wordcount.wordcount3.value=
formcontent.length*(1/100) // aquí está el precio de c/palabra//
}
</script>
<table border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="100%"><textarea rows="12" name="wordcount2" cols="60"></textarea></td>
    </tr>
    <tr>
      <td width="100%"><div align="right"><p><strong><input type="button" value="Calcular precio"
      onClick="countit()"><strong><input type="text"  name="wordcount3" size="20"> IVA incluido</strong> </p>
     </td>
    </tr>
  </table>
</form>

Muchas gracias por vuestra ayuda y espero que alguien pueda socorrerme!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 10
Ha aumentado su posición en 10 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Contador de palabras

Publicado por Amadeo (23 intervenciones) el 02/05/2015 02:57:58
Hola HectorQueen,
He tomado tu codigo, lo he insertado en un <body> de un HTML minimo y parece funcionar.
Solo he hecho una modificacion: eliminar el simbolo € que parece no ser reconocido como
<meta charset="ISO-8859-1">
Tal vez sea eso y debas poner el simbolo por su código ,,, (algo como &#8364; )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="POST" name="wordcount">
<script language="JavaScript">
function countit(){
 
var formcontent=document.wordcount.wordcount2.value
formcontent=formcontent.split(" ")
document.wordcount.wordcount3.value=
formcontent.length*(1/100) // aquí está el precio de c/palabra//
}
</script>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100%"><textarea rows="12" name="wordcount2" cols="60"></textarea></td>
</tr>
<tr>
<td width="100%"><div align="right"><p><strong><input type="button" value="Calcular precio"
onClick="countit()"> &#8364; <strong><input type="text" name="wordcount3" size="20"> IVA incluido</strong> </p>
</td>
</tr>
</table>
</form>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Contador de palabras

Publicado por HectorQueen (5 intervenciones) el 02/05/2015 10:54:39
Hola, Amadeo. Gracias por responder. A mí me funciona con "€", de todas maneras es cierto que con la solución que compartes es un código más puro. Lo que sigo sin conseguir es la aplicación de diferentes descuentos al resultado final. He probado con if (wordcount3 > 40000) {wordcount3*0.9) //para aplicar un descuento del 10%, pero no funciona//

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<form method="POST" name="wordcount">
  <script language="JavaScript">
function countit(){
 
var formcontent=document.wordcount.wordcount2.value
formcontent=formcontent.split(" ")
document.wordcount.wordcount3.value=
formcontent.length*(1/100)
}
</script>
<table border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="100%"><textarea rows="12" name="wordcount2" cols="60"></textarea></td>
    </tr>
    <tr>
      <td width="100%"><div align="right"><p><strong><input type="button" value="Calcular precio"
      onClick="countit()"><strong><input type="text"  name="wordcount3" size="20"> IVA incluido</strong> </p>
     </td>
    </tr>
  </table>
</form>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 10 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Contador de palabras

Publicado por Amadeo (23 intervenciones) el 02/05/2015 12:54:03
ojo con esto:
formcontent.length*(1/100)
yo no se mucho de javascript (soy nuevo), pero en Java por ejemplo seria un error ya que
1/100 =0,
mientras que
1.0/100 = 0.01

no se si tendrá que ver..
tb usas formcontent como string y como le asignas un string[ ] del split segun entiendo.
parece correcto en javascript pero yo usaria nombres distintos para probar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Contador de palabras

Publicado por HectorQueen (5 intervenciones) el 02/05/2015 16:18:42
Gracias por la recomendación, Amadeo, lo cambiaré. En cuanto a aplicar los descuentos condicionales, ¿se te ocurre alguna idea de cómo hacerlo? Yo estoy perdido. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas
Val: 95
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Contador de palabras

Publicado por Vainas (258 intervenciones) el 03/05/2015 10:22:48
Buenas:

Amadeo no te preocupes por 1/100 = 1.0/100 ya que en javascript funciona igual. Tampoco te des mal por asignar a una variable primero un string y luego un array por que cambia sin que pase nada.

Mis recomendaciones:

Vigila que no pones "punto y coma" donde deberian estar y puede darte un error el javascript.

primero puedes meter en una variable el numero de palabras y ya apartir de alli hacer tus calculos.

He usado trim para quitar espacios al principio y al final por que sino los calculos se hacen mal, aun asi yo buscaria alguna funcion que cuente palabras que este mejor hecha.

Te paso lo que he modificado: http://jsfiddle.net/a3t6c9fk/1/

Cuando lo pases a tu codigo fijate tambien que <script>...</script> puede ir al final antes de que se cierre body.

Te faltaban las etiquetas de cerrar input, un div...

Espero que te sirva. Saludos.

p.d.: No he podido llegar a 40.000 palabras..... jaja
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Contador de palabras

Publicado por HectorQueen (5 intervenciones) el 05/05/2015 02:14:05
Gracias por tu inestimable ayuda, Vainas, me ha servido mucho y ya voy teniendo otras ideas para añadir al código, luego lo subo completo. Eso sí, aún estoy probando porque lo he intentado con un texto de más de 40.000 palabras y el resultado que arroja no es correcto. Sigo probando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Contador de palabras

Publicado por HectorQueen (5 intervenciones) el 06/05/2015 23:39:49
Ahora sí funciona con textos superiores a 40.000 palabras. He cambiado el orden, primero los textos más extensos y luego los más breves. Dejo el enlace: https://jsfiddle.net/a3t6c9fk/4/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar