Autor Zpráva
nox
Profil *
ahoj nevěděl by, prosím, někdo, proč mi daný kód při kliknutí na 10 podtrhne i násobky deseti v posledním řádku, ale při kliknutí přeba na 40 mi 80, jako násobek 40 nepodtrhne?
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-2" http-equiv="content-type">
  <link rel="stylesheet" type="text/css" href="style1.css">



  <script type="text/javascript">
    function zvyrazni(n){
        var radek, sloupec, el;
        for (radek = 2; radek <= 10; radek++) {
            for (sloupec = 2; sloupec <= 10; sloupec++) {
                if (radek != 1 || sloupec != 1){
                    el = document.getElementById(radek+'_'+sloupec).innerHTML;
                    if((el % n) == 0){
                        var styl = document.getElementById(radek+'_'+sloupec);
                        styl.style.borderBottom="1px solid blue";                    
                    }
                    else{
                        var styl = document.getElementById(radek+'_'+sloupec);
                        styl.style.borderBottom="1px solid green";
                    }
                }
            }
        }
        return n;
    }
  </script>
  <title>Skripty</title>
</head>
<body>

<table>
<script type="text/javascript">
var radek, sloupec;
for (radek = 1; radek <= 10; radek++) {
    document.write("<tr>");
    for (sloupec = 1; sloupec <= 10; sloupec++) {
        var hodnota = radek*sloupec;
        if (radek == 1 || sloupec == 1)
            if ((hodnota % 10) == 0)
                document.write("<th class=\"red\" id=\""+radek+"_"+sloupec+"\">"+hodnota+"</th>");
            else
                document.write("<th id=\""+radek+"_"+sloupec+"\">"+hodnota+"</th>");
        else
            if ((hodnota % 10) == 0)
                document.write("<td class=\"red\" id=\""+radek+"_"+sloupec+"\" onclick=\"zvyrazni("+hodnota+");\">"+hodnota+"</td>");
            else
                document.write("<td id=\""+radek+"_"+sloupec+"\" onclick=\"zvyrazni("+hodnota+");\">"+hodnota+"</td>");
    }
    document.write("</tr>");
}
</script>
</table>

</body>
</html>


a css:

table
{
  border-collapse: collapse;
}

td
{
  border-collapse: collapse;
	border: 1px solid green;
}

vůbec mě nenapdá, co by mohlo být špatně :(
_es
Profil
Prečítal si si vôbec to, čo sommm ti poradil v inom vlákne?
Načo zakladáš nové vlákno?
nox
Profil *
omlouvám se, nečetl jsem to
když řádek 48, respektive 50 nahradím řádkem
                document.write("<td class=\"red\" id=\""+radek+"_"+sloupec+"\" onclick=\"zvyrazni(hodnota);\">"+hodnota+"</td>");
                document.write("<td id=\""+radek+"_"+sloupec+"\" onclick=\"zvyrazni(hodnota);\">"+hodnota+"</td>");
zkoušel jsem i tohle
                document.write("<td class=\"red\" id=\""+radek+"_"+sloupec+"\" onclick=\""+zvyrazni(hodnota);+"\">"+hodnota+"</td>");
                document.write("<td id=\""+radek+"_"+sloupec+"\" onclick=\""+zvyrazni(hodnota);+"\">"+hodnota+"</td>");
ach jo už fakt nevím, co dělám zle :(
_es
Profil
Skús radšej popísať, čo sa snažíš dosiahnuť, ten neprehľadný a zbytočne komplikovaný kód asi po tebe nemá nikto chuť lúštiť.
Možno ti potom niekto poradí približný návrh, ako postupovať.
nox
Profil *
v tabulce 10x10, mám čísla malé násobilky. potřebuju po kliknutí na jedno z těch čísel, aby se podtrhly jeho násobky... takže když kliknu na 32, tak se podthnou 2x 32 a 64, když kliknu na 5, tak se podtrhnou všechna čísla od 5 až po 100, když jsou násobnek pěti. za předpokladu, že 1. řádek a 1. sloupec této tabulky (matice) je hlavička, na kterou to kliknutí reaogovat nebude
_es
Profil
nox
V prvom rade by bolo dobré priradiť id nie podľa stĺpcov a riadkov ale podľa samotných hodnôt.
Čiže keď sa klikne na 6, tak sa podčiarknu bunky s hodnotou id 6, 2*6, 3*6 ...
nox
Profil *
_es teďka nevím jestli tomu rozumím správně. Takže když ty id přepíšu na násobky, tak ale se mi bude id opakovat, ne? a id by mělo být v jednom dokumentu unikátní?
_es
Profil
Máš pravdu sú tam hodnoty aj viackrát.
Možno bude predsa len ľahšie to s tými riadkami a stĺpcami.
No zle deteguješ tie bunky.
Malo by to byť asi nejako takto:
var t = 0; while((t += hodnota) <= 100) for(var x=2; x<=10; x++)  if(!(t % x))/*podčiarkni bunku v riadku x a stĺpci (hodnota / x)*/;
nox
Profil *
působí to na mě hodně podobně, jako ty moje 2 fory
      function zvyrazni(hodnota){
        var t = 0; 
        while( (t += hodnota) <= 100){
            for(var x=2; x<=10; x++){
                var y = hodnota/x;
                if(!(t % x)){
                    var styl = document.getElementById(x+'_'+y);
                    styl.style.borderBottom="1px solid white";                    
                }
                else{
                    var styl = document.getElementById(x+'_'+y);
                    styl.style.borderBottom="1px solid green";
                }
            }
        }
      }
a tento kód mi nic nepodtrhne, co zase dělám kde špatně? :(
_es
Profil
nox
Má tam byť t/x namiesto hodnota/x a podmienku treba ešte rozšíriť na if(!(t % x) && document.getElementById(x+'_'+y))
A vetva else v tom cykle nemá zmysel, keďže tento cyklus neprechádza cez všetky bunky.
habendorf
Profil
Netýká se přímo problému, ale přímé stylování bych nahradil přiřazením třídy.
nox
Profil *
nějaká větev else tam být musí, abych když kliknu na jiné číslo, aby se to podbarvení vrátilo do defaultního podtržení. takže když jsem to napsal takto:
      function zvyrazni(hodnota){
        var t = 0; 
        while( (t += hodnota) <= 100){
            for(var x=2; x<=10; x++){
                var y = t/x;
                if(!(t % x) && document.getElementById(x+'_'+y)){
                    var styl = document.getElementById(x+'_'+y);
                    styl.style.borderBottom="1px solid white";                    
                }
            }
        }
      }

tak to předchozí zvýraznění nesmaže...
_es
Profil
A okrem tej drobnosti, už ti to funguje tak ako má?
Tak pred podčiarknutím najprv prejdeš všetky bunky a nastavíš na nich východzí stav.
Síce to bude veľmi neefektívne, no komu by sa chcelo s tým viac zaoberať.
Asi by to nejako išlo oveľa jednoduchšie, využitím tried a pod. a a bez toho getElementById.
nox
Profil *
jj kromě toho posledního řádku, kde jsou desítky to funguje... zkoušel jsem u
styl.style.borderBottom="1px solid white"; nějak nastavit !important, že mi to připadalo, jako by ta půvobní hodnota měla větší váhu.
Nebo mě teď napadá (i když asi taky neefektivní řešení) jestli jde přes styl.style.borderBottom="1px solid white"; nastavit nějaká Zvalue, prostě pozice v ose z

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0