Lessons Learned After Finally Configuring a Raspberry Pi CM4 Mini Router (Bought in 2022) Product Mini Router built with Raspberry Pi Compute Module 4 Dual Gigabit Ethernet NICs 4GB RAM / 32GB eMMC Pre-installed OpenWrt Compact form factor, fanless, low power Background: A Device That Waited Its Turn I bought this device back in 2022 . At the time, it looked like the perfect small router: Raspberry Pi Compute Module 4 Dual Ethernet ports OpenWrt already installed No SD card required thanks to eMMC But like many homelab projects, it ended up sitting on a shelf . Fast forward to today — with more networking experience, a clearer home network plan, and a real need for a flexible router — I finally decided to configure it properly. That’s when the real journey started. What I Expected (Even in 2025) Even knowing this wasn’t a consumer router, I still expected: Plug WAN into my upstream router Plug LAN into my laptop Access 192.168.1.1 Hav...
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.
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 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?
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>> </TD>
<TD class=xl30 id="table2">>{rc_ClassAvg2} </TD>
<TD class=xl30> </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?
The line inside the while loop:
ResponderEliminarn = document.getElementById("table");
Shouldn't be?
n = document.getElementById("table1");
Yeah! That's typing issue. I am going to updated.
EliminarAnother 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".
ResponderEliminarWouldn'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.
ResponderEliminarI mean something like this in html:
Eliminar«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»
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