JavaScript - Codigo funciona directamente , pero no en una funcion.

   
Vista:

Codigo funciona directamente , pero no en una funcion.

Publicado por Absant (5 intervenciones) el 16/05/2018 13:09:37
Buenas!
Estoy desarrollando una app y en la zona "grafica" uso jsp,html y javascript. Es de mis primeras veces usando javascript.

Mi problema es.
Creo un bloque de codigo que me imprime una lista de botones a partir de un listado que paso por un servlet.Eso funciona aplicando el codigo directamente en el html. Pero si creo una funcion y la llamo, el mismo codigo deja de funcionar.

Este es el codigo que funciona ( elimine el jsp para reducirlo en la pregunta).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<table class="table table-striped table-bordered table-list" id="table">
 
    <tbody id="tbody">
 
 
    <script>
 
        var btn = document.createElement("BUTTON");// Create a <button> element
        btn.setAttribute('type', 'button'); // input element of type button
        btn.setAttribute('value', 'prueba');
        btn.setAttribute('id', 0);
        cont ++;
        btn.onclick = function() {genera_tabla(list,this.id)};
        var t = document.createTextNode("prueba");       // Create a text node
        btn.appendChild(t);                                // Append the text to <button>
        document.body.appendChild(btn);
 
    </script>
 
    </tbody>
</table>

Si esto lo añado en una función de nombre "prueba", y la invoco tal que asi.

1
2
3
<script>
prueba();
</script>

Este deja de funcionar
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
Imágen de perfil de xve

Codigo funciona directamente , pero no en una funcion.

Publicado por xve (1926 intervenciones) el 16/05/2018 20:28:13
Como has creado la función? en principio debería de funcionarte!!
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

Codigo funciona directamente , pero no en una funcion.

Publicado por Absant (5 intervenciones) el 16/05/2018 21:32:53
Simplemente cogi el codigo que funcionaba y lo puse entre .

1
2
3
function prueba(){
//Aqui
}

De hecho , cree el mismo metodo tomando datos desde bd y creando botones dinamicamente, y al llamarlo (dentro de una funcion), entra en el metodo por que hace la consulta. Pero luego no muestra los botones.

El caso es que se ejecuta, pero no pinta nada.
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

Codigo funciona directamente , pero no en una funcion.

Publicado por Cesar (4 intervenciones) el 16/05/2018 21:43:25
Hola.

Puede ser por el orden en que se ejecute la pagina.

Prueba empleando la libreria de JQuery, y llamando a tu funcion prueba dentro de la funcion document ready:

1
2
3
$( document ).ready(function() {
    prueba();
});
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

Codigo funciona directamente , pero no en una funcion.

Publicado por Absant (5 intervenciones) el 16/05/2018 22:29:37
Nada ...

Incluso simplifique a un método simple por probar, y sigue sin mostrar nada: Incluso probe a cambiar el orden (primero crear el metodo y luego ejecutarlo) y nada.

Solo funcionan las funciones si las llamo desde "onclick" en un boton ya creado.

1
2
3
4
5
6
7
8
$( document ).ready(function() {
    prueba();
});
 
function prueba(){
    document.write("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
Imágen de perfil de xve

Codigo funciona directamente , pero no en una funcion.

Publicado por xve (1926 intervenciones) el 17/05/2018 07:19:49
Algo estas haciendo mal, ya que si pruebas este código funciona perfectamente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js" type="text/javascript"></script>
</head>
 
<body>
 
</body>
</html>
 
<script>
$( document ).ready(function() {
    prueba();
});
 
function prueba(){
    document.write("PROBANDO");
 
};
</script>

Revisa la consola del navegador, seguramente ahí te indicara el error
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

Codigo funciona directamente , pero no en una funcion.

Publicado por Absant (5 intervenciones) el 17/05/2018 10:00:17
En la consola estaba la clave.

Solucionado al fin!

Error de novato -.-

Me faltaba importar el jquery.min.js.

Este era un borrador de otro proyecto, copie las librerias de java, etc. Pero se me pasaron la de jquery.

Gracias a ambos :)
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