Autor Zpráva
Sandro
Profil *
ahoj,

potreboval bych poradit. Dejme tomu, ze mam nekolik inputu ve tvaru

<input type="text" name="jmeno1" value="A">
<input type="text" name="jmeno2" value="B">
<input type="text" name="jmeno3" value="C">

a potrebuju vytvorit funkci
EraseInput(i) tak, aby vymazala obsah i-teho inputu

napadlo me:
function EraseInput(i)
{
document.getElementByName('jmeno'+i).value='';
}

ale to bohuzel nefunguje. Nevide nekdo, co s tim?
Podotykam, ze je priklad znacne zjednodusen, poli je priblizne 100, pouziti id="jmeno1" je proto trochu haluz a bylo by fajn, kdyby nebylo treba ke kazdeu poli jeste krome name davat IDcka
habendorf
Profil
var inputs = document.getElementsByTagName('input'); 
function EraseInput(i)
{
inputs[i].value='';
}

To je jen učebnicový příklad. Předpokládá třeba, že v dokumentu žádné jiné inputy nejsou. Ale můžeš z toho vyjít.
Joker
Profil
Sandro:
poli je priblizne 100, pouziti id="jmeno1" je proto trochu haluz
Proč? Úkol "Ke všem prvkům <input> s atributem name přidat atribut id stejné hodnoty jako má name" se s pořádným editorem dá zvládnout do půl minuty.
Například v PSPadu bych to udělal tak, že bych dal nahradit pomocí regulárního výrazu:
najít: <input(.*?) name="([^"]+)"
nahradit: <input$1 name="$2" id="$2"

Od toho ty počítače jsou, aby za nás dělaly jednoduché opakující se činnosti :-)
Sandro
Profil *
To je sice pravda, ale pokud by to byvalo slo i bez toho, bylo by to lepsi. Proto jsem se ptal na detElementByName. Otazka vsak zni, jak budu pristupovat k jednotlivym i-tym IDckum? getElementById('jmeno'+i) nefunguje
Sandro
Profil *
odvolavam - mel jsem tam stupidni preklep - tak tedy alespon takto pres ID
THX
habendorf
Profil
No a není to moje krapet jednodušší?
suvel
Profil
Sandro:
mel jsem tam stupidni preklep
Napiš, prosím, jaký překlep. Čirou náhodou se už přes hodinu potýkám s podobným problémem, totiž s načtením hodnoty z <input>, kde name i id jsem udělal identické, ale proměnná je pole. Ty inputy vypadají asi takhle:
<?php
...
...
echo "<INPUT NAME='t[".$i."]' VALUE='".$D."' id='[".$i."]'>";
....
....
Ale ať zkouším načíst v javascriptové fci (která na jiné inputy běžně funguje) hodnotu proměnné pomocí
df = document.getElementById("t[i]");
nebo df = document.getElementByName("t[i]");
nefunguje to. Ani když zkusím df = (formular.t[i].value);
Třeba už jsem jenom zblblý, prosím, nakopněte mě. Dík
Chamurappi
Profil
Reaguji na suvla:
Napiš, prosím, jaký překlep.
Předpokládáš, že jsi náhodou udělal úplně stejný překlep?

df = document.getElementById("t[i]");
Sandro zde sdělil, že getElementById('jmeno'+i) funguje. Proč se tedy pokoušíš o jiný (nefunkční) zápis?
LuBoss
Profil *
Davat id='[1]', id='[2]' ... alebo name='t[1]', name='t[1]', mi pride velmi divne a matuce. V tom druhom pripade, to skoro vyzera akoby si tam chcel dostat hodnotu z nejakeho pola t a nie retazec 't[1]'.
suvel
Profil
Přesně tak, pracuju s polem. Jinak getElementById('t'+i).value z echo"<INPUT NAME='t[".$i."]' VALUE='".$D."' id='t".$i."'>"; skutečně funguje (jen mi to trvalo trochu déle, než jsem to vyladil, protože nejsem v javascriptu žádný expert). Počet prvků pole si do javascriptu načtu z <input type=hidden> a pak si v tom javascriptu s tím polem v pohodě můžu dělat co chci včetně návratu kurzoru do libovolného inputu pomocí document.getElementById('t'+i).focus();
Snad to někomu, kdo potřebuje pracovat v javascriptu s polem z html (php) pomůže.

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: