Autor Zpráva
Acci
Profil
Mám zhruba nějaký takový kód:

<select name="name" id="name" size="1" onchange="zmen()">
<option value="hodnota1">Nazev 1</option>
<option value="hodnota2">Nazev 2</option>
</select>
<script>
function zmen()
{
var radek = "...";
e = document.getElementById('tabulka');
e.innerHTML = e.innerHTML+radek
}
</script>

Problém nastane, pokud se pokusím vybrat položku "Nazev 2". Funkce zmen() se sice provede, zároveň se ale select změní na položku "Nazev 1". Pokud odstraním "e.innerHTML = e.innerHTML+radek;" z funkce, vybraná položka zůstane zachována, takže nejspíš je problém se změnou DOM dokumentu. Jak udělat, aby zůstala zachována vybraná položka? Zkoušel jsem to pouze ve Firefoxu.
los
Profil *
Mne ten kód vo Firefoxe funguje (keď tam vedľa ešte pridám nejaký div s id="tabulka"). Neviem, prečo by to nemalo fungovať Tebe.

Jedine, že by ten element select bol vnorený v prvku s id="tabulka", tak by bolo také chovanie logické, pretože by si tým innerHTML prepísal aj element select, takže by bol znova v začiatočnom stave. Takže ak je problém v tomto, tak to musíš zmeniť tak, aby si neprepisoval časť dokumentu s elementom select. Napr. približne takto:
function zmen() {

var el = document.getElementById("tabulka");
el.appendChild(document.createTextNode("..."));
}
Acci
Profil
Jo, máš pravdu, že to může být tím mě nenapadlo.
To tvé řešení funguje, jen mám problém s tím, že proměnná radek obsahuje HTML kód, takže se zobrazí jen kód.
los
Profil *
To tvé řešení funguje, jen mám problém s tím, že proměnná radek obsahuje HTML kód, takže se zobrazí jen kód.
Nj, tá ukážka vkladá iba text. Hlavné je, že už vieš, ako to spraviť. Buď umiestniš ten element s id="tabulka" niekde inde a budeš mu meniť innerHTML, alebo použiješ metódy createElement, createTextNode a cloneNode k vytvoreniu toho, čo potrebuješ.
nofate
Profil
Preco nefunguje toto


<select id="test" >
</select>

<script language="javascript" type="text/javascript">
document.getElementById("test").innerHTML = "<option value="1">jedna</option><option value="2">dva</option>";
</script>
nofate
Profil
pochopitelne, tam pri "1" a tiez "2" mam pred uvodzovkami spatne lomitka. Po pridani prispevku ich forum odstranilo.
los
Profil *
Nefunguje to preto, lebo autori prehliadača to asi neimplementovali. Možnosti môžeš pridávať dynamicky zhruba nejako takto:
var select = document.getElementById("test");

select.options[0] = new Option("jedna", 1);
select.options[1] = new Option("dva", 2);

Pre vymazanie všetkých možností stačí nastaviť vlastnosť length kolekcie options na nulu.
Toto téma je uzamčeno. Odpověď nelze zaslat.