Autor Zpráva
Hopa
Profil
Mám dán option select kde je 5 moznosti na vyber. Jak muzu nastavit aby se zobrazila pri nacteni stranky predvybrana moznost selectu aniz bych menil poradi optionu?? Snad je to srozumitelne. Diky

Moderátor Chamurappi: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou a interpunkcí.
Chamurappi
Profil
Reaguji na Hopu:
Přidej <option>u atribut selected.
Hopa
Profil
a kdyz to potrebuju ve skriptu menit pri generovani stranky podle nejakeho drivejsiho nastaveni? jak v tom selektu dokazu pristoupit k tomu optionu a vybrat ho?
sysel
Profil
Myslím, že během prohlížení stránky lze jednoduše nastavit hodnotu <selectu>, samozřejmě z vhodných možností:

tentoSelect.value = "hodnota"


Nastavovat hodnotu mimo těch, které jsou vyjmenovány v <option>ech, by způsobilo nejspíš chybu a také by nebylo co zobrazit. I ztěchto důvodů by patrně bylo vhodné celý seznam <option>ů vygenerovat dynamicky a hodnoty i zobrazovaný text mít v poli.
Fred
Profil
Nevím jestli chápu dobře co chceš, je to trochu nesrozumitelné. Tady máš příklad a můžeš si v něm zobrazit co to generuje (každý prohlížeč mrví generovaný zdroj jinak, toho se nelekej).
<style type="text/css">
*{outline:none;margin:0;padding:0;}
#radiopole{list-style-type:none;}
table{vertical-align:top;border:none;border-collapse:collapse;}
a{display:block;}
/*pro evangelisty: je to v tabulce a co?*/
</style>
<table>
  <tr>
    <td>
      <select size="4" id="slc">
        <option selected="selected">0</option>
        <option>1</option>
        <option>2</option>
        <option>3</option>
      </select>
      </td>
      <td>
      <ul id="radiopole">
        <li><input type="radio" name="r[]" id="a0"><label for="a0">0</label></li>
        <li><input type="radio" name="r[]" id="a1"><label for="a1">1</label></li>
        <li><input type="radio" name="r[]" id="a2"><label for="a2">2</label></li>
        <li><input type="radio" name="r[]" id="a3"><label for="a3">3</label></li>
      </ul>
    </td>
  </tr>
</table>
<script>
function vyber(){
var pole=document.getElementById('radiopole');
var radia=pole.getElementsByTagName('input');
      for(var i=0;i<radia.length;i++){
      radia[i].setAttribute('rel',i);
      document.getElementById('slc').options[i].removeAttribute('selected');
      radia[i].onclick=function(){
      document.getElementById('slc').selectedIndex=this.getAttribute('rel');
      document.getElementById('slc').options[document.getElementById('slc').selectedIndex].setAttribute('selected','selected');
      }
      }
}
window.onload=vyber;
</script>
<a href="javascript:'<xmp>'+document.getElementsByTagName('html')[0].innerHTML+'</xmp>';">zobrazit co to generuje</a>
Fred
Profil
Předtím jsem se nedíval ve firefoxu co to generuje a mám tam chybku, takhle to smázne na onload selected="selected" a přidává to na každý vybraný option, aby to přidávalo vždy jen na jeden je třeba za řádkem s onclickem znovu zavolat tu onload funkci
 ...
 radia[i].onclick=function(){
 vyber();
 ...
 
sysel
Profil
Omlouvám se za absenci, jsem mimo svůj pracovní vývojový bordel. Proto se dočkáš návrhu nějakého kódu až se večer vrátím dom. Ale ze studijních důvodů můžeš prohlédnout jednu ne zcela povedenou JS aplikaci támhle. :-)
Hopaa
Profil *
Diky, podarilo se mi to rozjet jak jsem potreboval!
Nevite jeste jak pomoci skritpu nastavit selectu velikost? abych mel vsechny slecty v tabulce pekne stejne velky a nemenila se sirka podle vybraneho optionu? Deluji
Hopaa
Profil *
a vycentrovni textu v poli typu 'text' ? "BLUSH"
Chamurappi
Profil
Reaguji na Freda:
To je nějaké zbytečně upovídané. Nešlo by to bez removeAttribute, getAttribute, setAttribute a zneužití relu?
function vyber()
{
  var pole = document.getElementById('radiopole');
  var radia = pole.getElementsByTagName('input');
  var select = document.getElementById('slc');
  for(var i = 0, radio; radio = radia[i]; i++)
  {
    select.options[i].selected = false;
    (function(i)
    {
      radio.onclick = function()
      {
        vyber();
        select.options[i].selected = true;
      };
    })(i);
  }
}

Vlastně by to mělo jít ještě víc zrubat:
function vyber()
{
  var radia = document.getElementById('radiopole').getElementsByTagName('input');
  var select = document.getElementById('slc');
  for(var i = 0, radio; radio = radia[i]; i++)
  {
    select.options[i].selected = radio.checked;
    radio.onclick = vyber;
  }
}


Reaguji na Hopau:
Stejně pořád nerozumím, co vlastně chceš. Fredův skript sice poběží, ale připadá mi víceméně k ničemu.

Nevite jeste jak pomoci skritpu nastavit selectu velikost?
Kdybys velikostí myslel ten atribut size, tak objektSelectu.size = číslo.

abych mel vsechny slecty v tabulce pekne stejne velky a nemenila se sirka podle vybraneho optionu
Nastav CSS vlastnost width.

a vycentrovni textu v poli typu 'text' ?
Stejně jako v čemkoliv jiném.

BLUSH
Huš. Piš česky, nutné anglické citace překládej.
Hopaa
Profil *
ja ten script ani nepoustel, jen sem potreboval vedet ty klicovy slova a pak pohoda.
ten "size" jeste vyzkousim, me to nejak blblo, ale kdo vi kde jsem se prepsal.....
"BLUSH" .. jakoze se stydim za trapne dotazy ;)
jeste jednou dikec za pomoc
Fred
Profil
Reguji na Chamurappi: Na rel jsem nějak zvyknul jako cvičená opice. Ta zrubaná funkce je moc pěkná.
V IE funguje ve všech 3 případech generovaný zdroj.
Ale Firefox mi po vyzkoušení nasadil brouka do hlavy, protože mi není jasné proč to nepřegeneruje, i přestože to jde vyalertovat
alert(select.options[select.selectedIndex].text)

Zkoušel jsem jak
<a href="javascript:'<xmp>'+document.getElementsByTagName('html')[0].innerHTML+'</xmp>';">zobrazit co to generuje v tomto okně</a>

tak i
<a href="javascript:document.write(document.documentElement.innerHTML);%20document.close();">přepsat stránku a zobrazit přepsaný zdroják pomocí ctrl+u</a>

V MSIE jsou ty generované zdroje v pořádku ve všech 3 případech oběma způsoby.
Zvláštní.
Chamurappi
Profil
Reaguji na Freda:
Firefox mi po vyzkoušení nasadil brouka do hlavy, protože mi není jasné proč to nepřegeneruje
Co přesně máš na mysli?
V HTML kódu v innerHTML se neodráží přesně všechny vlastnosti DOMu, zejména v Mozillách existuje u formulářů víc anomálií, kdy třeba může prvek.getAttribute("value") vracet něco jiného než prvek.value.
Fred
Profil
V HTML kódu v innerHTML se neodráží přesně všechny vlastnosti DOMu, zejména v Mozillách existuje u formulářů
to jsem netušil, protože to většinou spíš blblo u IE a právě proto používám ty bookmarklety, abyhc si překontroloval, zda se opravdu generuje to co předpokládám. V IE mám na mysli třeba situaci kdy chybí tbody u table, nebo atributy name, usemap apod. Prostě mě to překvapilo.

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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