Autor Zpráva
sh00ter
Profil
zdravim,

chci se zeptat, mam skript, kde na <td> mam onclick, kterej vola funkci ktera pak opravuje obsah,

zjednoduseny skript
HTML:
<td id='td' onclick='funkce(this.id)'>aaa</td>

JS:
function funkce(id, way) {
      if(way=="in") {
        document.getElementById(id).innerHTML = ......;
        document.getElementById(id).onclick = "";
      }
      else if(way == "out") {
        document.getElementById(id).innertHTML = ......;
        document.getElementById(id).onclick = "funkce("+id+", \"in\")";   //tohle nefunguje
      }
}

vsechno to funguje az na ten druhej onclick

nevite jak to zprovoznit? diky
Chamurappi
Profil
Reaguji na sh00tera:
Kdykoliv skriptem přiřazuješ text, u kterého chceš, aby se vykonával jako skript, je něco špatně. Můžeš přeci normálně přiřadit funkci, ne?
něco.onclick = function()
{
  funkce(id, "in")
};

Celé to jde napsat jednodušeji. Máš objekt buňky tabulky, při kliknutí na něj z něj zjistíš ID, to předáš funkci, ta podle ID zase najde zpátky ten objekt tabulky (který jsi měl v this) — není to trochu divné?
<td onclick="funkce(this)">aaa</td>
<script>
function funkce(bunka)
{
  bunka.innerHTML = "...";
}
</script>
Svoji proměnnou „way“ si můžeš pověsit na tu buňku (JS dovoluje rozšiřovat si objekty) a pracovat tedy s bunka.way.
sh00ter
Profil
jo ok dik, akorat nechapu to s tim way....?
Chamurappi
Profil
Reaguji na sh00tera:
function funkce(bunka)
{
  if(bunka.way)
    bunka.innerHTML = "...";
  else
    bunka.innerHTML = "...";
  bunka.way = !bunka.way;
}
Prostě si vymyslíš novou vlastnost.
sh00ter
Profil
ok dik moc ;)
sh00ter
Profil
no ale vyskyt se mi jinej problem,
kdyz mam pak
bunka.onclick = function () {
alert("aa");
}

tak se mi to rovnou provede a nastavi i tu vlastnost nez aby to jen ty bunce nastavilo tu vlastnost...
Chamurappi
Profil
Reaguji na sh00tera:
Prosím o odkaz na živou ukázku.
Vůbec nerozumím, proč chceš z onclicku měnit onclick.
sh00ter
Profil
ziva ukazka http://sh00ter.xf.cz/test.html
Chamurappi
Profil
Reaguji na sh00tera:
Proč měníš ten onclick?
sh00ter
Profil
tedka si tam zkus klepnout do toho inputu, proto...
Chamurappi
Profil
Reaguji na sh00tera:
Připadám si, jak když mluvím do dubu.
Nenastavuj nový onclick, viz příspěvek [#4].
sh00ter
Profil
bez nastaveni onclicku to tam mam tedka
Chamurappi
Profil
Reaguji na sh00tera:
Hm. A je snad v něčem problém? Čeho chceš docílit?
sh00ter
Profil
problem je v tom ze kdyz tedka klepnu na ten text zmeni se na input s tim textem, to je spravne, ale kdyz klepnu do toho inputu, vlozi mi to tam zas "<input type ....>" proste to co ta funkce ma vkladat,

vysledek ma vypadat tak ze kdyz klepnu na text v bunce, ta se zmeni v input plus potvrzujici input a kdyz to potvrdim tak se to zas zmeni jen na text, a tak furt dokola, tedka bez tech zmen toho onclicku to funguje je to ze se to zmeni na input, pak si to dela co chce, a s tema zmenama to funguje jen jednou, takze klepnu zmeni se na input, upravim, potvrdim zmeni se na text ale znova uz to nefunguje...
Chamurappi
Profil
Reaguji na sh00tera:
ale kdyz klepnu do toho inputu, vlozi mi to tam zas
Už jsem ti napsal, jak si zapamatovat, že se změnil stav. Viz [#4].

vysledek ma vypadat tak ze kdyz klepnu na text v bunce, ta se zmeni v input plus potvrzujici input
To je jeden úkon.

kdyz to potvrdim tak se to zas zmeni jen na text
To je druhý úkon.

Proč se je snažíš oba dva úkony nacpat do jedné funkce?
sh00ter
Profil
ale tak kdyz to rozdelim tak mi to pomuze max trosku v prehlednosti,

ja ten onclick na ty bunce potrebuju zrusit kdyz tam mam ten input, a pak kdyz uz ho tam nemam ho potrebuju zase nahodit, zruseni funguje, ale nahozeni ne...

way sem teda udelal podle tebe..
sh00ter
Profil
jezis promin, ja tam mel aspon v tomhle priklade spatnej nazev funkce....O:-)

ale funguje mi to jen pod IE :( v chromu se jen zobrazi input :(
sh00ter
Profil
tak jsem přišel na to že do tý druhý změny onclicku to funguje....ta druha zmena to nak ve vsech prohlizecich pojebe...
Chamurappi
Profil
Reaguji na sh00tera:
kdyz to rozdelim tak mi to pomuze max trosku v prehlednosti
Hnát dva různé onclicky přes jednu funkci, která navíc ten onclick přepíše, je jednak praštěné a jednak ti to zjevně vůbec nejde.

ja ten onclick na ty bunce potrebuju zrusit kdyz tam mam ten input
Nepotřebuješ. Už jsem ti napsal, jak si zapamatovat, že se změnil stav. Viz [#4].

Také jsem ti napsal, že je hloupost posílat do funkce ID aktuálního objektu jen proto, abys podle toho ID našel aktuální objekt. Jelikož si tam při kliknutí vyrábíš duplicitní ID, může se ti tahle hloupost docela snadno vymstít.
sh00ter
Profil
dobre mam rozdeleno na dve funkce, ale proste ten prvni onclick tam bejt musi, jinak tu funkci ktera udela input budu volat furt dokola; delam to s objectem misto id ale stejne to nefunguje...
Chamurappi
Profil
Reaguji na sh00tera:
jinak tu funkci ktera udela input budu volat furt dokola
Ano, budeš. Už jsem ti napsal, jak si zapamatovat, že se změnil stav. Viz [#4].
sh00ter
Profil
dobre mam to udelany pres tu vymyslenou vlastnost, ale funkcnost je furt stejna...

ja kdyz predavam ten objekt ty druhy funkci ktera to vraci zpatky na text tak mi to vrati undefined...
Chamurappi
Profil
Reaguji na sh00tera:
predavam ten objekt ty druhy funkci ktera to vraci zpatky
Ten objekt nepředáváš. Generuješ tam doslova „onclick="rminput([object])"“.
Jak jsem již říkal, kdykoliv skriptem přiřazuješ text, u kterého chceš, aby se vykonával jako skript, je něco špatně. Platí to i pro tento onclick. Nejjednodušší by asi bylo vyrobit ten <input> přes document.createElement (podrobnosti si najdi sám), pak můžeš onclick přiřadit opět jako funkci. A nebo si tedy vrať zpátky ta ídéčka, pokud je objektové programování nad tvé chápání.

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: