Ir al contenido principal

Dealing with generated code in HTML

Last night one friend of my calls me to help him with the application they use at the school he works. He wanted to have the final grades less than 70 with red color. It's only a one java-script function he tells me. And it's true. But there is a hidden story in that simple java-script function.

First of all. I start checking that the table is a generated table. No problem with this. But then i noticed something funny all the rows have the same ID. WTF was my first impression.
 <TD class=xl30 id="table1">{rc_ClassAvg1} </TD>  
 <TD class=xl30>>&nbsp;</TD>  
 <TD class=xl30 id="table2">>{rc_ClassAvg2} </TD>  
 <TD class=xl30>&nbsp;</TD>  
 <TD class=xl30 id="table3">{rc_ClassAvg3} </TD>  
rc_ClassAvg1 generates the code for all the grades, and all the rows it generates come with id=table1.

So my simple java-script file had to deal with repeated rows with the same idea. Looking at stackoverflow I found this question.

It help me deal with the generated code that had the same id.


 this.changecolor = function(){  
  var value;  
  var id;  
   var n = document.getElementById("table1");  
   var a = [];  
   var y=1;  
   while(n) {  
     a.push(n);  
     n.id = "table"+y;  
   y=y+1;  
     n = document.getElementById("table");  
  }  
  for(i=0;i<a.length;i++){  
   elementid=a[i].id;  
   value=document.getElementById(elementid).innerHTML;  
   if (value < 70 ){  
    document.getElementById(elementid).style.color='red';  
   }  
  }  
 };  
At the end I have to go by each element change the element id and put this elements in an array.
This would have been solved other way if my generated code didn't include the same id for each element. I guess that's a bug.

Just wondering what solution would have you done?

Comentarios

  1. The line inside the while loop:

    n = document.getElementById("table");

    Shouldn't be?
    n = document.getElementById("table1");

    ResponderEliminar
  2. Another problem would be that the "Table2" and "Table3" elements already exist and it will get duplicated, maybe you want to usen another id like "Table_n".

    ResponderEliminar
  3. Wouldn't it be better to use HTML5 form validation for things like this? If it's possible, then it should be a lot easier, a lot faster to code and a much more efficient.

    ResponderEliminar
    Respuestas
    1. I mean something like this in html:

      «input required type="number" min="70" max=100" value="55"»

      And then a style sheet such as this:

      «style»
      input:invalid { background-color:red; }
      «/style»

      Eliminar
    2. Yes! You are right. But there is a big issue. The place where they will use this they use IE8. HTML5 will not work

      Eliminar

Publicar un comentario

Entradas populares de este blog

Find which devices are connected to our network

Sometimes, we want to know how many devices are connected to our network. With any Unix OS you get easily know this. For this small tutorial we´re going to use Lubuntu 16.04.

We will use nmap. Nmap (Network Mapper) is a security scanner. It is used to discover hosts and services on a computer network.

For installing it, we first do

sudo apt-get install nmap
If we just need to identify the host names

 sudo nmap -sL 192.168.0.1/24  The result of this command will be

Starting Nmap 7.01 ( https://nmap.org ) at 2016-10-02 12:39 CST
Nmap scan report for 192.168.0.0
Nmap scan report for 192.168.0.1
Nmap scan report for 192.168.0.2
Nmap scan report for 192.168.0.3
Nmap scan report for 192.168.0.4
Nmap scan report for 192.168.0.5


If we need to know the OS of the devices we have connected we do a:

sudo nmap -O 192.168.0.1/24
The address 192.188.0.1 depends of your network, you should do a ifconfig for knowing yours.
The result of this command will be something like this:

Nmap scan report for 192.168…

La ultima alegría de los sampedranos del 2017

El año 2017 esta por terminar, y para la ciudadanía de la capital industrial ha sido un año singular. La ciudad se enorgullecía de que en nuestro Aeropuerto Ramon Villeda Morales, íbamos a tener el único vuelo directo entre Europa y Honduras. Finalmente se empezaba a ver obras de infraestructura concluyendo en el tiempo establecido. Se podían observar los cruces de cebra en las intersecciones de la tercera avenida y primera calle, aparte que los conductores empezaron a respetarlos, y no digamos los semáforos peatonales que lindo es ver como la ciudadanía espera su momento para cruzar por el lugar que le corresponde.

Parecía que este 2017 iba a ser un año de alegrías para la ciudad, y que no iba a suceder  algo que lo podría devastar esas pequeñas alegrías que nos hacían olvidar todas esas políticas de gobierno provenientes de la capital, que han perjudicado al  territorio nacional y no digamos a la ciudad que produce mas del 40% del PIB del país .

Llegaban las elecciones y el actual a…

Access to AWS Postgres instance in private subnet

I have been working with AWS in the last days and encounter some issues when using RDS.  Generally when you're working in development environment you have setup your database as Publicly accessible and this isn't an issue. But when you're working in Production. So we place the Amazon RDS database into a private subnet. What we need to do for connecting to the database using PgAdmin or other tool?

We're going to use one of the most common methods for doing this. You will need to launch an Amazon EC2 instance in the public subnet and then use it as jumping box.

So after you have your EC2, you will need to run the following command.
See explantion below

After this, you will need to configure your PgAdmin.
The host name will be your localhost, the port is the same you define in the above command.
Maintenance database will be your DB name and the username you have for connecting.

Hope this helps you connect to your databases.