| Autor | Zpráva | ||
|---|---|---|---|
| breeta Profil * |
#1 · Zasláno: 11. 8. 2010, 19:01:03
Zdravím, jak mám v cyklu definovat proměnou?
mám kód
<script type="text/javascript">
var pole = ['jedna','dva','tri','ctyri'];
for (var number = 0 ; number <=3 ; number ++) {
var option+number = pole[number];
}
</script>
chci aby se definovala promena option0, option1 atd .. ale hlasí to missing ; before statement |
||
| Yur4Y Profil |
#2 · Zasláno: 11. 8. 2010, 19:31:20
Jediná možnosť bude použiť
window["option"+number] = pole[number] |
||
| breeta Profil * |
#3 · Zasláno: 11. 8. 2010, 19:45:51
Vytvářím option v select a mám tam třeba 15 položek tak se mi nechce dokolečka psát ten kód
var option1 = document.createElement('option');
option1.setAttribute('value', 'Půjčka / úvěr');
var txt1 = document.createTextNode("Půjčka / úvěr");
option1.appendChild(txt1);
tak jsem chtěl vytvořit pole s hodnotami pro option a dosadit jich přes for |
||
| Joker Profil |
#4 · Zasláno: 11. 8. 2010, 19:56:03
breeta:
Javascript pokud vím nemá proměnné proměnné. To je specialitka PHP, upřímně řečeno jsem zatím nezažil situaci, kdy by to bylo k něčemu dobré. Co je tak špatného na poli? |
||
| Tori Profil |
#5 · Zasláno: 11. 8. 2010, 20:25:14 · Upravil/a: Tori
breeta:
„chtěl jsem vytvořit pole s hodnotami pro option a dosadit jich přes for“ Pokud potřebujete jen tohle, šlo by to udělat i bez proměnných proměnných: function pridejVolby() {
var hodnoty = ['jedna','dva','tri','ctyri'];
var moznosti = ['pujcka','hypoteka','uver','jina loupez'];
// tady se vám musí shodovat počet a pořadí hodnot a textových popisů voleb
var vyber = document.getElementById('idSelectu');
for (var i=0; i < hodnoty.length; i++) {
var optionX = document.createElement('option');
optionX.text = moznosti[i];
optionX.value = hodnoty[i];
vyber.appendChild(optionX);
}
} Ohledně spolehlivosti používání setAttribute() a get Attribute() viz téma Doporučuji užívat standardní vlastnosti HTML DOMu místo getAttribute/setAttribute |
||
| Chamurappi Profil |
#6 · Zasláno: 11. 8. 2010, 20:28:27 · Upravil/a: Chamurappi
Reaguji na breetu:
„tak jsem chtěl vytvořit pole s hodnotami pro option“ Tak vytvoř pole a nesnaž se hloupě uplácat název proměnné. „tak se mi nechce dokolečka psát ten kód“ Co s tím <option>em uděláš, když ho vytvoříš? Potřebuješ si ho někde dlouhodoběji uskladnit? Jestli ne a rovnou ho zapojuješ do <select>u, tak je zbytečné i to vytváření pole.
Ten kód jde dost zrubat: 1) Místo volání metody setAttribute můžeš přiřazovat rovnou do value.
2) Pokud nevyplníš value, je hodnotou zobrazovaný text => je zbytečné vyplňovat value, pokud má být stejná jako text.
3) Tvorbu <option>u jde zapsat i jako new Option("text", "hodnota") nebo new Option("text a zároveň hodnota").
Takže do <select>u můžeš přidávat jednoduše select.appendChild(new Option(pole[i])).
|
||
| breeta Profil * |
#7 · Zasláno: 12. 8. 2010, 08:36:28
Diky všem, nakonec jsem to napsal takhle:
var valuesOption = ["Půjčka / úvěr", "Hypotéční úvěr", "Kreditní karta", "Kontokorent", "Povolený debet", "Úvěr ze stavebního spoření", "Leasing" ];
for (var i=0; i < valuesOption.length; i++) {
var newOption = new Option (valuesOption[i]);
select.add(newOption, undefined);
}
|
||
| Chamurappi Profil |
#8 · Zasláno: 12. 8. 2010, 09:29:34 · Upravil/a: Chamurappi
Reaguji na breetu:
Ale předpokládám, že ti to nefunguje správně ve všech prohlížečích. Použij ten appendChild.
|
||
| breeta Profil * |
#9 · Zasláno: 12. 8. 2010, 10:30:40
Chamurappi
IE8, Firefox, Opera vše OK! |
||
| Chamurappi Profil |
#10 · Zasláno: 12. 8. 2010, 12:42:41
Reaguji na breetu:
To je málo. Testuj lépe. |
||
|
Časová prodleva: 15 let
|
|||
0