Autor Zpráva
LukasPokorny
Profil
Dobry den,

zadam Vas o radu s prvkem innerHTML. Muj problem je nasledujici: Potrebuji pomoci JS zmenit cast html kodu, ktery opet obsahuje JS za jiny. Konkretne mam dve radio tlacitka a pri kliknuti na ne se provede akce onClick a prave diky teto akci potrebuji zmenit cas html kodu.

<input type="radio" name="explorer_tavern_01" value="adventure" onclick="document.getElementById('hint_explorer_tavern_01').innerHTML='<img src=\'images/db.png\' onclick=\'javascript:explorer_input01(\'The Dark BrotherHood\');\'><img src=\'images/bn.png\' onclick=\'javascript:explorer_input01(\'Bandit Nest\');\'>'">

<input type="radio" name="explorer_tavern_01" value="treasure" onclick="document.getElementById('hint_explorer_tavern_01').innerHTML='<img src=\'images/granite.png\' onclick=\'javascript:explorer_input01(\'Granite\');\'><img src=\'images/ewp.png\' onclick=\'javascript:explorer_input01(\'EWP\');\'>'">

<div id="hint_explorer_tavern_01"></div>
Funce explorer_input01 je definovana v externim souboru a vklada text do input pole jinde v dokumentu v zavisloti na kliknuty obrazek . Cely tento kod ma za ucel menit napovedu (pomoci divu, ktery se zmeni na display block po najeti na mysi na input) k input poli a pomoci radio tlacitka potrebuji meni obsah napovedy, tedy divu, ktery se zobrazuje ci je skyry. Bohuzel nelze pouzit iframe do innerHTML, protoze pak nefunguje funkce pro vlozeni textu do input pole. PS: uvnitr stringu innerHTML jsou pouzity normalni <, > akorat zde se prevadeji na kod.

Nevim jestli jsem to vysvetlil nejak pochopitelne. Kazdopadne predem dekuji za pomoc.
Str4wberry
Profil
Podívejte se na zanoření uvozovek.
onclick="
innerHTML='
onclick=\'
explorer_input01(\'

Ta u explorer_input01 nechtěně ukončí onclick.


Jinak elegantnější řešení by mi přišlo mít ten další obsah normálně v HTML kódu a skriptem ho jen odkrývat.
LukasPokorny
Profil
Dekuji za odpoved, byl jsem z tech zavorek dezorientovany, tak jsem to uplne prehledl. Jeste bych se rad rovnou zeptal na jinou vec, opet nevidim duvod proc funkce nefunguje.

function explorer_input(myField,myValue)
{doc_content=document.explorers.myField.value+myValue
document.explorers.myField.value=doc_content
document.explorers.myField.focus()}

Funkce ma vkladat do input pole (myField) text (myValue). Dekuji
Str4wberry
Profil
Protože jako myField předáváte řetězec. V takové případě je nutné zvolit postup:
document.explorers[myField].value

Nebo předávat celý element, který se má změnit, ale ↑ mi přijde lepší.
LukasPokorny
Profil
Mnohokrat dekuji v JS se zatim moc nevyznam, jsem zvykly na PHP a tak trochu zmatkuji. Mohl bych pozadat jeste o jednou pomoc? Jde o volani funkce z funkce a nevim si rady, jak na zprovozneni skriptu.

function displayAdventure(explorerHint,explorerField){
document.getElementById(explorerHint).innerHTML="<img src='images/traitors.png' alt='traitors' onclick=ExplorerAddText("+explorerField+",'traitors_text');>"}

Tusim, ze nebude neco spravne s promennou, kterou dostazuji do funkce v innerHTML, ale nevim jak to vyresit, tak aby to fungovalo. Dekuji


Tak vyreseno:

function displayAdventure(explorerHint,explorerField){
document.getElementById(explorerHint).innerHTML="<img src='images/traitors.png' alt='traitors' onclick=ExplorerAddText('"+explorerField+"','traitors_text');>"}
Str4wberry
Profil
Když už jste na to přišel sám, tak ještě doplním ukázky k [#2] a [#4]:

1) Živá ukázka
2) Živá ukázka

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:

Prosím používejte diakritiku a interpunkci.

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