Autor | Zpráva | ||
---|---|---|---|
nox Profil * |
#1 · Zasláno: 3. 3. 2009, 19:06:05
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 |
#2 · Zasláno: 3. 3. 2009, 21:50:52
Prečítal si si vôbec to, čo sommm ti poradil v inom vlákne?
Načo zakladáš nové vlákno? |
||
nox Profil * |
#3 · Zasláno: 4. 3. 2009, 07:31:12
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>"); document.write("<td class=\"red\" id=\""+radek+"_"+sloupec+"\" onclick=\""+zvyrazni(hodnota);+"\">"+hodnota+"</td>"); document.write("<td id=\""+radek+"_"+sloupec+"\" onclick=\""+zvyrazni(hodnota);+"\">"+hodnota+"</td>"); |
||
_es Profil |
#4 · Zasláno: 4. 3. 2009, 09:10:19
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 * |
#5 · Zasláno: 4. 3. 2009, 09:32:35
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 |
#6 · Zasláno: 4. 3. 2009, 11:30:09 · Upravil/a: _es
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 * |
#7 · Zasláno: 4. 3. 2009, 11:47:16
_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 |
#8 · Zasláno: 4. 3. 2009, 12:56:48 · Upravil/a: _es
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 * |
#9 · Zasláno: 4. 3. 2009, 14:25:32
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"; } } } } |
||
_es Profil |
#10 · Zasláno: 4. 3. 2009, 14:45:09
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 |
#11 · Zasláno: 4. 3. 2009, 14:50:28
Netýká se přímo problému, ale přímé stylování bych nahradil přiřazením třídy.
|
||
nox Profil * |
#12 · Zasláno: 4. 3. 2009, 15:24:26
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 |
#13 · Zasláno: 4. 3. 2009, 16:10:57
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 * |
#14 · Zasláno: 4. 3. 2009, 16:18:06
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 |
||
Časová prodleva: 15 let
|
0