Autor | Zpráva | ||
---|---|---|---|
maks Profil |
#1 · Zasláno: 5. 8. 2009, 20:29:32 · Upravil/a: maks
Ahoj,
mám několik elementů, které mají ID ve tvaru neco_id. Já teď pomocí document.getElementById('neco_10') pracuji s daným elementem, který má id = 10. A má otázka zní, pokud bych chtěl pracovat, třeba označit nebo cokoliv jiného, více elementů, jak na to? Dejme tomu, že bych potřeboval vybrat všechny s ID mezi 10 a 20, tedy 10, 11, 12, 13 ... 19. Bude/Mělo by to fungovat tak, že kliknu na nějaký element a jiným se změní barva. Hledám tedy něco, jako je v PHP LIKE (LIKE 'neco_1%') nebo v tomto smyslu. tlačítka: 0 - 9 - po kliknut obarví elementy s ID >0 a <10 10 - 19 - po kliknut obarví elementy s ID >9 a <20 (onclick="document.getElementById(LIKE 'neco_1%')") 20 - 29 - po kliknut obarví elementy s ID >19 a <30 (onclick="document.getElementById(LIKE 'neco_2%')") ... <span id="neco_1">text</span> <span id="neco_2">text</span> <span id="neco_3">text</span> ... <span id="neco_30">text</span> Pořádně nevím, jak to vysvětlit, snad je to pochopitelné. Děkuji. |
||
DJ Miky Profil |
#2 · Zasláno: 5. 8. 2009, 21:25:28
Co cyklus?
function oznac(od,do) { for(var i=od; i<=do; i++) { document.getElementById('neco_'+i).style.backgroundColor='#F00'; } } A pak jen <input type="button" onclick="oznac(10,19)" value="10 - 19"> |
||
ah01 Profil |
#3 · Zasláno: 5. 8. 2009, 22:59:42
maks
Nic jiného než cyklus ti patrně nezbude. Doporučuji ale nejprve zkontrolovat, jestli daný element vůbec existuje, jinak se můžeš dostat do velkých problémů. Být tebou, tak si nejprve vytvořím fci, která mi zajistí průchod všemi elementy. function eachElementLike(prefix, from, to, callback) { for(var i = from; i <= to; i++) { var el = document.getElementById(prefix + i); if(el != null) { callback.call(el, i); } } } Fce. označ by pak vypadala takto: function oznac(from, to) { eachElementLike('neco_', from, to, function(n){ // this ... aktuální element // n ... číslo elementu (to se může někdy hodit) this.style.backgroundColor = "red"; }); } |
||
_es Profil |
#4 · Zasláno: 5. 8. 2009, 23:16:52
ah01
„Nic jiného než cyklus ti patrně nezbude. “ Možno by sa ešte dala meniť v CSS trieda nejakého nadradeného objektu tak, aby sa správne zmenilo zobrazenie tých 30 prvkov čo obsahuje. Neviem, či by to tak mohlo fungovať, len ma to tak napadlo. Ak by to tak šlo, tak by miesto cyklu stačil jeden príkaz. |
||
maks Profil |
#5 · Zasláno: 6. 8. 2009, 16:15:50
_es
„Možno by sa ešte dala meniť v CSS trieda nejakého nadradeného objektu tak“ nešla, ve skutečnosti je to tabulka a bude se měnit barva řádků, ale nechtělo se mi vypisovat dlouhý kód tabulky, span je jednodušší. A potřebuji jen některé, takhle by se obarvily všechny ah01 to vypadá zajímavě, zkusím se na to večer kouknou. I kdyby to nebylo ono, tak děkuji aspoň za inspiraci :-) |
||
Časová prodleva: 15 let
|
0