JavaScript - Duda para crear un input type=”text” desde DOM

 
Vista:
sin imagen de perfil

Duda para crear un input type=”text” desde DOM

Publicado por Ivan Camilo Rosales (2 intervenciones) el 05/05/2018 05:54:46
Hola, tengo una inquietud con el manejo del DOM estoy desarrollando una tabla que consta de 6 columnas (#Cuota, valorCouta, ValorExtra ,Intereses, AbonoCapital, Saldo) la idea es que al hacer click en input type="button" me genere la tabla con n filas, del mismo modo en la columna (ValorExtra) genere n numero de input type="text" ; el inconveniente que tengo como tal es que los input type="text" me les asigna el mismo atributo ID =”hola” , y la idea es que si el input está en la fila 5 el ID del input debe de ser ID=”hola5”.
He creado una función crearInput() que me crea n input pero no consigo poner ese input en la celda de la tabla. Gracias.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<!DOCTYPE html>
<html>
 
 
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
 
 
<body>
    <div class="row">
        <div class="col-2">
            <label>Saldo</label>
            <input type="text" class="form-control"  id="Valsaldo">
        </div>
 
        <div class="col-2">
            <label>Varlor Primera Cuota</label>
            <input type="text" class="form-control" name="Val1Cuota" id="Val1Cuota" placeholder="Ingresa el Valor de la primera cuota">
        </div>
 
        <div class="col-1">
            <label>Interes</label>
            <input type="text" name="valIntereses" id="valIntereses" class="form-control">
        </div>
        <div class="col-1">
            <label>Gradiente</label>
            <input type="text" name="valGradiente" id="valGradiente" class="form-control">
        </div>
        <div class="col-1">
            <label>Periodos</label>
            <input type="text"  class="form-control" id="numPeriodos" onchange="numfilas()">
        </div>
        <div class="col-4">
            <input type="button"  value="Obtener Valor del input4" onclick="valorInput()">
        </div>
    </div>
    <div id="resultado" class="alert alert-primary"></div>
 
<div class="col-7">
    <table id="myTable" class="table table-hover table-bordered table-striped table-sm ">
        <thead class="thead-dark" >
            <tr>
                <th># Cuota</th>
                <th>Valor Cuota</th>
                <th>Valor Extra</th>
                <th>Interes</th>
                <th>Abono Capital</th>
                <th>Saldo</th>
            </tr>
        </thead>
        <tbody id="campos">
 
        </tbody>
    </table>
</div>
 
 
 
 
 
 
 
<script>
var resultado;
//obtenemos el valor de la 1 cuota
var val1Cuota,filas,valInte,interesDecimal,valGrdi,saldo;
 
function datos(){
    val1Cuota = document.getElementById("Val1Cuota").value;
    valInte = document.getElementById("valIntereses").value;
    interesDecimal= valInte/100;
    valGrdi = document.getElementById("valGradiente").value;
    saldo = document.getElementById("Valsaldo").value;
    filas = document.getElementById("numPeriodos").value;
    resultado = document.getElementById("resultado");
}
 
 
function CrearMyTable(NumRows){
    //val1Cuota = document.getElementById("Val1Cuota").value;
    datos();
    var table = document.getElementById("myTable");
    var row = table.insertRow(1);
    var cell1 = row.insertCell(0);
    var cell2 = row.insertCell(1);
    var cell3 = row.insertCell(2);
    var cell4 = row.insertCell(3);
    var cell5 = row.insertCell(4);
    var cell6 = row.insertCell(5);
    cell1.innerHTML = NumRows;
    cell2.innerHTML = "dfgdghf";
    //cell3.innerHTML = '<div id="cajaTexto"> </div>';
    cell3.innerHTML ='<input type="text"  id="valExtra" class="form-control">';
    cell4.innerHTML ="Saldo * interes";
    cell5.innerHTML ="ValCuota - interes";
    cell6.innerHTML ="saldo - ValExtra - AbonoCapital";
}
 
 
function crearInput(NumRows){
    for(var n=1;n<=NumRows;n++){
        var newInput = document.createElement("input");
        newInput.setAttribute("type","text");
        newInput.setAttribute("class","form-control");
        newInput.setAttribute("id","ValExtra"+n);
        $("#cajaTexto").appendChild(newInput);
        console.log(newInput);
    }
 
}
 
function $(selector){
    return document.querySelector(selector);
}
 
function numfilas(){
    //filas = document.getElementById("numPeriodos").value;
    datos();
    for(var i=filas;i>=1;i--){
        var temC=0;
 
        CrearMyTable(i);
    }
}
</script>
 
</body>
</html>
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
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Duda para crear un input type=”text” desde DOM

Publicado por xve (2100 intervenciones) el 05/05/2018 10:23:54
Hola Ivan, segun veo en el código, eso ya lo tienes aplicado en esta linea, no?
1
newInput.setAttribute("id","ValExtra"+n);
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

Duda para crear un input type=”text” desde DOM

Publicado por Ivan Camilo (2 intervenciones) el 05/05/2018 15:49:42
Si, ya tengo una función crearInput() que me crea los input text con diferente Id lo que sucede es que no he podido poner esa función en la columna 3 para que los input se muestren en la tabla, en este momento cell3.innerHTML ='<input type="text" id="valExtra" class="form-control">'; genera los input text en la tabla pero con el mismo ID…
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 Pedro
Val: 101
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Duda para crear un input type=”text” desde DOM

Publicado por Pedro (23 intervenciones) el 05/05/2018 17:20:37
Creo que el problema es porque cell3.innerHTML = //Está esperando un String no un objeto de la función crearinput()

Debes cambiar el algoritmo de tu problema aquí te comparto una tarea que hice en mi ciclo formativo que puede resolverte tus dudas, en esta tarea creo una tabla dinámicamente le doy un id , le aplico css a través de su attribute , creo un tbody para luego ir rellenando dinámicamente con el contenido recibido de un json.Espero te sea de gran ayuda.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//Una vez leído el documento iniciar
window.onload=inicio;
//para no tener que escribir document
var d=document;
//Empieza la funcion inicio
function inicio()
{
	//Creo un objeto xmlhttprequest
	var con= new XMLHttpRequest();
	//llamo funcion y le paso por parámetros el objeto
    peticion(con);
}
function peticion(con)
{ //Empiezo a darle forma a la petición por el 
	//metdo get,llamo al archivo json y asyncrono
  con.open("GET","libros.json",true);
  con.onreadystatechange=controlestados;
  con.send(null);
}
 
function controlestados()
{   /*Una vez el estado sea 4 y nos devuelva un retorno 200
	  entramos en el condicional*/
	if(this.readyState==4 && this.status==200)
	{
	 //meto el json parseado a una variable 
	 var miobjeto=JSON.parse(this.responseText);
	 //obtengo el id del  body
	 var body = document.getElementsByTagName("body")[0];
	 //Empiezo a crear la tabla 
	 var tabla1=d.createElement('table');
	 //le doy atributos a la tabla
	 tabla1.setAttribute('border','2');
	 tabla1.setAttribute('id','mitabla');
	 //creo elemento tbody para cargar los 
	   //respectivos tr y td en él
	 var tbodycont=d.createElement('tbody')
	   //Creo elemento tr 
	  var tr=d.createElement('tr');
	  //inserto las Celdas 0 1 y 2
      // Y cargo contenido con innerhtml en los td
	  var unocell=tr.insertCell(0);
	  var doscell=tr.insertCell(1);
	  var trescell=tr.insertCell(2);
	  unocell.innerHTML="TITULO";
	  doscell.innerHTML="TIPO";
	  trescell.innerHTML="AUTOR";
	  //Añado el tr  a la tabla
	  tabla1.appendChild(tr);
	  //Añado la tabla al body
	  body.appendChild(tabla1);
 
	 //Bucle for para recorrer el array obtenido
	 //del Json  
	 for(var i=0;i<miobjeto.libros.length;i++)
	 {
	 	//Voy creando elementos tr para meter
	 	//el contenido del  Json
	   var tr=d.createElement('tr');
      //Meto en el tr los td a los cuales
      //les voy metiendo los valores del array
	  tr.innerHTML="<td>"+
	  miobjeto.libros[i]['titulo']+"</td><td>"+
	  miobjeto.libros[i]['tipo']+"</td><td>"+
	  miobjeto.libros[i]['autor']+"</td>";
	  //meto en tbody el tr creado
	  tbodycont.appendChild(tr);
 
 
 
	 }
	  //Meto en la tabla el contenido de tbody
      tabla1.appendChild(tbodycont);
      //Meto en el body el contenido de la tabla
      //Para que se visualice.
      body.appendChild(tabla1);
 
 
 
	 }
 
}
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